From 69a6072d137b27007640145cdd97df20b78fd9ad Mon Sep 17 00:00:00 2001 From: Hoa Nguyen Date: Fri, 24 May 2024 19:07:35 +0700 Subject: [PATCH 1/7] fead: update to sdk50 (#510) Co-authored-by: dzmitry-lahoda Co-authored-by: kienn6034 Co-authored-by: rustdev Co-authored-by: rust.dev <102041955+RustNinja@users.noreply.github.com> Co-authored-by: kkast Co-authored-by: Kanstantsin Kastsevich Co-authored-by: rjonczy Co-authored-by: tungle --- .github/workflows/build.yml | 4 +- .github/workflows/codeql.yml | 2 +- .github/workflows/interchaintest.yml | 16 +- .github/workflows/lint.yml | 2 +- .github/workflows/tests.yml | 2 +- .gitignore | 5 +- .golangci.yml | 3 +- .idea/.gitignore | 8 + .idea/composable-cosmos.iml | 9 + .idea/modules.xml | 8 + .idea/vcs.xml | 8 + Dockerfile | 2 +- Makefile | 66 +- app/ante/ante.go | 12 +- app/ante/ibc_ante.go | 2 +- app/app.go | 326 +-- app/encoding.go | 20 +- app/export.go | 56 +- app/helpers/test_helpers.go | 77 +- app/ibctesting/chain.go | 715 +++---- app/ibctesting/chain_test.go | 54 + app/ibctesting/config.go | 26 +- app/ibctesting/coordinator.go | 15 +- app/ibctesting/endpoint.go | 354 +++- app/ibctesting/event_utils.go | 129 +- app/ibctesting/helper.go | 16 + app/ibctesting/path.go | 89 +- app/ibctesting/simapp/README.md | 51 - app/ibctesting/simapp/ante_handler.go | 49 - app/ibctesting/simapp/app.go | 1021 ---------- app/ibctesting/simapp/config.go | 75 - app/ibctesting/simapp/encoding.go | 20 - app/ibctesting/simapp/export.go | 198 -- app/ibctesting/simapp/genesis.go | 21 - app/ibctesting/simapp/genesis_account.go | 47 - app/ibctesting/simapp/genesis_account_test.go | 88 - app/ibctesting/simapp/params/amino.go | 27 - app/ibctesting/simapp/params/doc.go | 19 - app/ibctesting/simapp/params/encoding.go | 16 - app/ibctesting/simapp/params/params.go | 7 - app/ibctesting/simapp/params/proto.go | 27 - app/ibctesting/simapp/params/weights.go | 28 - app/ibctesting/simapp/sim_bench_test.go | 122 -- app/ibctesting/simapp/sim_test.go | 343 ---- app/ibctesting/simapp/simd/cmd/cmd_test.go | 12 - app/ibctesting/simapp/simd/cmd/genaccounts.go | 184 -- .../simapp/simd/cmd/genaccounts_test.go | 86 - app/ibctesting/simapp/simd/cmd/root.go | 324 --- app/ibctesting/simapp/simd/main.go | 25 - app/ibctesting/simapp/state.go | 233 --- app/ibctesting/simapp/test_helpers.go | 241 --- app/ibctesting/simapp/types.go | 43 - app/ibctesting/simapp/upgrades/upgrades.go | 23 - app/ibctesting/simapp/upgrades/v6/upgrades.go | 36 - app/ibctesting/simapp/upgrades/v7/upgrades.go | 42 - app/ibctesting/simapp/utils.go | 129 -- app/ibctesting/simapp/utils_test.go | 59 - app/ibctesting/value.go | 16 +- app/ibctesting/wasm.go | 45 +- app/keepers/keepers.go | 332 ++-- app/keepers/keys.go | 49 +- app/keepers/wasm.go | 3 + app/test_access.go | 13 +- app/test_helpers.go | 567 ++++-- app/test_support.go | 77 + app/upgrades/types.go | 8 +- app/upgrades/v6_5_0/constants.go | 21 - app/upgrades/v6_5_0/upgrade.go | 46 - app/upgrades/v6_5_1/constants.go | 20 - app/upgrades/v6_5_1/upgrade.go | 23 - app/upgrades/v6_5_2/constants.go | 20 - app/upgrades/v6_5_2/upgrade.go | 23 - app/upgrades/v6_5_3/constants.go | 20 - app/upgrades/v6_5_3/upgrade.go | 23 - app/upgrades/v6_5_4/constants.go | 20 - app/upgrades/v6_5_4/upgrade.go | 35 - app/upgrades/v6_5_5/constants.go | 20 - app/upgrades/v6_5_5/upgrade.go | 24 - app/upgrades/v6_6_1/constants.go | 20 - app/upgrades/v6_6_1/upgrade.go | 60 - app/upgrades/v6_6_2/constants.go | 20 - app/upgrades/v6_6_2/upgrade.go | 32 - app/upgrades/v6_6_4/constants.go | 20 - app/upgrades/v6_6_4/upgrade.go | 60 - app/upgrades/v6_6_4/upgrades_test.go | 540 ----- app/upgrades/v7_0_1/constants.go | 26 + app/upgrades/v7_0_1/upgrade.go | 70 + bech32-migration/auth/auth.go | 75 - bech32-migration/gov/gov.go | 55 - bech32-migration/ibchooks/ibchooks.go | 29 - .../ibctransfermiddleware.go | 32 - bech32-migration/ica/ica.go | 33 - bech32-migration/mint/mint.go | 32 - .../pfmmiddleware/pfmmiddleware.go | 67 - bech32-migration/slashing/slashing.go | 27 - bech32-migration/staking/staking.go | 110 -- .../transfermiddleware/transfermiddleware.go | 33 - bech32-migration/utils/utils.go | 167 -- bech32-migration/wasm/wasm.go | 78 - cmd/picad/cmd/genaccounts.go | 22 +- cmd/picad/cmd/root.go | 106 +- cmd/picad/config/config.go | 5 +- custom/bank/bank_test.go | 19 +- custom/bank/keeper/keeper.go | 24 +- custom/bank/keeper/msg_server.go | 124 ++ custom/bank/module.go | 19 +- custom/bank/types/keeper_interfaces.go | 8 +- custom/ibc-transfer/keeper/keeper.go | 19 +- custom/ibc-transfer/keeper/msg_server.go | 7 +- custom/ibc-transfer/module.go | 14 +- custom/staking/abci.go | 9 +- custom/staking/keeper/keeper.go | 66 +- custom/staking/module.go | 12 +- flake.lock | 1548 +++++++++++++++ flake.nix | 88 + go.mod | 384 ++-- go.sum | 1753 +++++++++++------ kien-note.md | 57 + proto/composable/mint/v1beta1/mint.proto | 12 +- proto/composable/mint/v1beta1/query.proto | 4 +- .../ratelimit/v1beta1/ratelimit.proto | 12 +- proto/composable/ratelimit/v1beta1/tx.proto | 12 +- scripts/08-wasm/ics10_grandpa_cw.wasm.json | 14 +- scripts/50/migrate-wasm-code.sh | 39 + scripts/50/store-wasm-code.sh | 36 + scripts/localnode-upgrade.sh | 78 + scripts/localnode.sh | 47 +- scripts/old-node/push-08-wasm.sh | 14 + scripts/old-node/testnode.sh | 71 + scripts/polkadot-js/getter/get_balance.ts | 39 + .../polkadot-js/getter/list_method_params.ts | 88 + .../polkadot-js/getter/list_rpc_methods.ts | 33 + scripts/polkadot-js/package.json | 13 + scripts/polkadot-js/src/ibc-transfer.ts | 109 + scripts/polkadot-js/src/simple-connect.ts | 25 + scripts/polkadot-js/src/transfer.ts | 51 + scripts/polkadot-js/tsconfig.json | 13 + scripts/polkadot-js/utils/indexer.ts | 30 + scripts/polkadot-js/yarn.lock | 569 ++++++ scripts/relayer/chains/test-1.json | 6 +- scripts/relayer/chains/test-2.json | 6 +- scripts/relayer/relayer-init.sh | 0 scripts/relayer_hyperspace/cleanup.sh | 21 + .../relayer_hyperspace/config-chain-a.toml | 13 + .../relayer_hyperspace/config-chain-b.toml | 20 + scripts/relayer_hyperspace/config-core.toml | 1 + .../relayer_hyperspace/config-relayer.toml | 15 + scripts/relayer_hyperspace/create-channel.sh | 2 + scripts/relayer_hyperspace/create-clients.sh | 2 + .../relayer_hyperspace/create-connections.sh | 1 + scripts/relayer_hyperspace/start-relay.sh | 2 + .../relayer_hyperspace/v47/create-clients.sh | 2 + .../v47/create-connection.sh | 2 + scripts/run-node.sh | 107 +- scripts/test-upgrade.sh | 40 +- scripts/testnode.sh | 29 +- scripts/tests/ibc-hooks/counter/Cargo.toml | 43 + scripts/tests/ibc-hooks/counter/README.md | 11 + .../ibc-hooks/counter/artifacts/checksums.txt | 1 + .../artifacts/checksums_intermediate.txt | 1 + .../ibc-hooks/counter/artifacts/counter.wasm | Bin 0 -> 177531 bytes .../tests/ibc-hooks/counter/src/contract.rs | 395 ++++ scripts/tests/ibc-hooks/counter/src/error.rs | 16 + .../tests/ibc-hooks/counter/src/helpers.rs | 48 + .../counter/src/integration_tests.rs | 71 + scripts/tests/ibc-hooks/counter/src/lib.rs | 9 + scripts/tests/ibc-hooks/counter/src/msg.rs | 63 + scripts/tests/ibc-hooks/counter/src/state.rs | 14 + scripts/tests/ibc-hooks/increment.sh | 109 + scripts/tests/init-test-framework.sh | 151 ++ scripts/tweak-test-upgrade.sh | 182 ++ .../upgrade/{init_deps.sh => init-deps.sh} | 13 +- scripts/upgrade/localnode.sh | 76 + scripts/upgrade/old-node-scripts.sh | 3 +- scripts/upgrade/setup-nix-polkadot.sh | 32 + ...taurid-node.sh => setup-old-picad-node.sh} | 9 +- scripts/upgrade/setup-polkadot-node.sh | 9 +- scripts/upgrade/upgrade.sh | 32 +- scripts/upgrade/v_6_6_0/pre-script.sh | 60 + scripts/upgrade/v_6_6_0/setup-08-wasm.sh | 23 + .../upgrade/v_6_6_0/setup-relayer-account.sh | 19 + scripts/upload_contracts.sh | 13 +- scripts/upload_contracts_new.sh | 12 + test | 1 + tests/interchaintest/basic_cosmos_test.go | 8 +- tests/interchaintest/chain_start_test.go | 8 +- .../contracts/ibchooks_counter.wasm | Bin 0 -> 161782 bytes tests/interchaintest/forward_timeout_test.go | 415 ++++ tests/interchaintest/go.mod | 262 +-- tests/interchaintest/go.sum | 661 ++++--- tests/interchaintest/helpers/cosmwasm.go | 176 ++ tests/interchaintest/helpers/ibchooks.go | 41 + tests/interchaintest/helpers/types.go | 95 + .../ibc_transfer_cosmos_test.go | 196 ++ tests/interchaintest/ibc_transfer_test.go | 107 +- tests/interchaintest/module_ibchooks_test.go | 183 ++ tests/interchaintest/module_pfm_test.go | 264 +++ tests/interchaintest/packet_forward_test.go | 686 +++++++ tests/interchaintest/polkadot_chain_test.go | 59 +- .../push_wasm_client_code_test.go | 46 +- tests/interchaintest/setup.go | 31 +- tests/interchaintest/upgrade_chain_test.go | 146 -- tests/interchaintest/validator_test.go | 102 - tmp-proposal.json | 34 + x/ibc-hooks/hooks.go | 8 +- x/ibc-hooks/ibc_module.go | 10 +- x/ibc-hooks/ics4_middleware.go | 8 +- x/ibc-hooks/keeper/keeper.go | 4 +- x/ibc-hooks/module.go | 16 +- x/ibc-hooks/relay_test.go | 237 --- x/ibc-hooks/utils.go | 6 +- x/ibc-hooks/wasm_hook.go | 13 +- x/ibctransfermiddleware/keeper/keeper.go | 4 +- x/ibctransfermiddleware/module.go | 13 +- x/ibctransfermiddleware/types/codec.go | 9 +- x/mint/abci.go | 5 +- x/mint/client/cli/query_test.go | 410 ++-- x/mint/keeper/keeper.go | 8 +- x/mint/module.go | 16 +- x/mint/simulation/decoder_test.go | 6 +- x/mint/simulation/genesis.go | 38 +- x/mint/simulation/genesis_test.go | 13 +- x/mint/simulation/proposals.go | 9 +- x/mint/simulation/proposals_test.go | 9 +- x/mint/types/codec.go | 6 +- x/mint/types/expected_keepers.go | 23 +- x/mint/types/genesis.go | 6 +- x/mint/types/mint.pb.go | 66 +- x/mint/types/minter.go | 24 +- x/mint/types/minter_test.go | 49 +- x/mint/types/params.go | 18 +- x/mint/types/query.pb.go | 65 +- x/ratelimit/ibc_middleware.go | 10 +- x/ratelimit/keeper/epoch.go | 3 +- x/ratelimit/keeper/grpc_query.go | 4 +- x/ratelimit/keeper/keeper.go | 6 +- x/ratelimit/keeper/packet.go | 12 +- x/ratelimit/keeper/rate_limit.go | 5 +- x/ratelimit/module.go | 20 +- x/ratelimit/relay_test.go | 47 +- x/ratelimit/types/codec.go | 9 +- x/ratelimit/types/expected_keepers.go | 8 +- x/ratelimit/types/msg.go | 2 +- x/ratelimit/types/ratelimit.pb.go | 93 +- x/ratelimit/types/tx.pb.go | 99 +- x/stakingmiddleware/keeper/keeper.go | 4 +- x/stakingmiddleware/module.go | 13 +- x/stakingmiddleware/types/codec.go | 9 +- x/transfermiddleware/ibc_ante_test.go | 29 +- x/transfermiddleware/ibc_middleware.go | 12 +- x/transfermiddleware/keeper/genesis.go | 3 +- x/transfermiddleware/keeper/grpc_query.go | 4 +- x/transfermiddleware/keeper/ics4wrapper.go | 20 +- x/transfermiddleware/keeper/keeper.go | 16 +- x/transfermiddleware/keeper/relay.go | 7 +- x/transfermiddleware/module.go | 20 +- x/transfermiddleware/pfm_test.go | 22 +- x/transfermiddleware/relay_test.go | 15 +- x/transfermiddleware/types/codec.go | 12 +- .../types/excepted_keepers.go | 15 +- x/transfermiddleware/types/msg.go | 4 +- x/tx-boundary/ante/antetest/ante_test.go | 22 +- .../ante/antetest/ante_test_setup.go | 17 +- x/tx-boundary/keeper/keeper.go | 4 +- x/tx-boundary/keeper/keeper_test.go | 4 +- x/tx-boundary/module.go | 9 +- x/tx-boundary/types/codec.go | 7 +- 267 files changed, 11789 insertions(+), 9307 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/composable-cosmos.iml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 app/ibctesting/chain_test.go create mode 100644 app/ibctesting/helper.go delete mode 100644 app/ibctesting/simapp/README.md delete mode 100644 app/ibctesting/simapp/ante_handler.go delete mode 100644 app/ibctesting/simapp/app.go delete mode 100644 app/ibctesting/simapp/config.go delete mode 100644 app/ibctesting/simapp/encoding.go delete mode 100644 app/ibctesting/simapp/export.go delete mode 100644 app/ibctesting/simapp/genesis.go delete mode 100644 app/ibctesting/simapp/genesis_account.go delete mode 100644 app/ibctesting/simapp/genesis_account_test.go delete mode 100644 app/ibctesting/simapp/params/amino.go delete mode 100644 app/ibctesting/simapp/params/doc.go delete mode 100644 app/ibctesting/simapp/params/encoding.go delete mode 100644 app/ibctesting/simapp/params/params.go delete mode 100644 app/ibctesting/simapp/params/proto.go delete mode 100644 app/ibctesting/simapp/params/weights.go delete mode 100644 app/ibctesting/simapp/sim_bench_test.go delete mode 100644 app/ibctesting/simapp/sim_test.go delete mode 100644 app/ibctesting/simapp/simd/cmd/cmd_test.go delete mode 100644 app/ibctesting/simapp/simd/cmd/genaccounts.go delete mode 100644 app/ibctesting/simapp/simd/cmd/genaccounts_test.go delete mode 100644 app/ibctesting/simapp/simd/cmd/root.go delete mode 100644 app/ibctesting/simapp/simd/main.go delete mode 100644 app/ibctesting/simapp/state.go delete mode 100644 app/ibctesting/simapp/test_helpers.go delete mode 100644 app/ibctesting/simapp/types.go delete mode 100644 app/ibctesting/simapp/upgrades/upgrades.go delete mode 100644 app/ibctesting/simapp/upgrades/v6/upgrades.go delete mode 100644 app/ibctesting/simapp/upgrades/v7/upgrades.go delete mode 100644 app/ibctesting/simapp/utils.go delete mode 100644 app/ibctesting/simapp/utils_test.go create mode 100644 app/test_support.go delete mode 100644 app/upgrades/v6_5_0/constants.go delete mode 100644 app/upgrades/v6_5_0/upgrade.go delete mode 100644 app/upgrades/v6_5_1/constants.go delete mode 100644 app/upgrades/v6_5_1/upgrade.go delete mode 100644 app/upgrades/v6_5_2/constants.go delete mode 100644 app/upgrades/v6_5_2/upgrade.go delete mode 100644 app/upgrades/v6_5_3/constants.go delete mode 100644 app/upgrades/v6_5_3/upgrade.go delete mode 100644 app/upgrades/v6_5_4/constants.go delete mode 100644 app/upgrades/v6_5_4/upgrade.go delete mode 100644 app/upgrades/v6_5_5/constants.go delete mode 100644 app/upgrades/v6_5_5/upgrade.go delete mode 100644 app/upgrades/v6_6_1/constants.go delete mode 100644 app/upgrades/v6_6_1/upgrade.go delete mode 100644 app/upgrades/v6_6_2/constants.go delete mode 100644 app/upgrades/v6_6_2/upgrade.go delete mode 100644 app/upgrades/v6_6_4/constants.go delete mode 100644 app/upgrades/v6_6_4/upgrade.go delete mode 100644 app/upgrades/v6_6_4/upgrades_test.go create mode 100644 app/upgrades/v7_0_1/constants.go create mode 100644 app/upgrades/v7_0_1/upgrade.go delete mode 100644 bech32-migration/auth/auth.go delete mode 100644 bech32-migration/gov/gov.go delete mode 100644 bech32-migration/ibchooks/ibchooks.go delete mode 100644 bech32-migration/ibctransfermiddleware/ibctransfermiddleware.go delete mode 100644 bech32-migration/ica/ica.go delete mode 100644 bech32-migration/mint/mint.go delete mode 100644 bech32-migration/pfmmiddleware/pfmmiddleware.go delete mode 100644 bech32-migration/slashing/slashing.go delete mode 100644 bech32-migration/staking/staking.go delete mode 100644 bech32-migration/transfermiddleware/transfermiddleware.go delete mode 100644 bech32-migration/utils/utils.go delete mode 100644 bech32-migration/wasm/wasm.go create mode 100644 custom/bank/keeper/msg_server.go create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 kien-note.md create mode 100755 scripts/50/migrate-wasm-code.sh create mode 100755 scripts/50/store-wasm-code.sh create mode 100755 scripts/localnode-upgrade.sh create mode 100755 scripts/old-node/push-08-wasm.sh create mode 100755 scripts/old-node/testnode.sh create mode 100644 scripts/polkadot-js/getter/get_balance.ts create mode 100644 scripts/polkadot-js/getter/list_method_params.ts create mode 100644 scripts/polkadot-js/getter/list_rpc_methods.ts create mode 100644 scripts/polkadot-js/package.json create mode 100644 scripts/polkadot-js/src/ibc-transfer.ts create mode 100644 scripts/polkadot-js/src/simple-connect.ts create mode 100644 scripts/polkadot-js/src/transfer.ts create mode 100644 scripts/polkadot-js/tsconfig.json create mode 100644 scripts/polkadot-js/utils/indexer.ts create mode 100644 scripts/polkadot-js/yarn.lock mode change 100644 => 100755 scripts/relayer/relayer-init.sh create mode 100755 scripts/relayer_hyperspace/cleanup.sh create mode 100644 scripts/relayer_hyperspace/config-chain-a.toml create mode 100644 scripts/relayer_hyperspace/config-chain-b.toml create mode 100644 scripts/relayer_hyperspace/config-core.toml create mode 100644 scripts/relayer_hyperspace/config-relayer.toml create mode 100755 scripts/relayer_hyperspace/create-channel.sh create mode 100755 scripts/relayer_hyperspace/create-clients.sh create mode 100755 scripts/relayer_hyperspace/create-connections.sh create mode 100755 scripts/relayer_hyperspace/start-relay.sh create mode 100755 scripts/relayer_hyperspace/v47/create-clients.sh create mode 100755 scripts/relayer_hyperspace/v47/create-connection.sh create mode 100644 scripts/tests/ibc-hooks/counter/Cargo.toml create mode 100644 scripts/tests/ibc-hooks/counter/README.md create mode 100644 scripts/tests/ibc-hooks/counter/artifacts/checksums.txt create mode 100644 scripts/tests/ibc-hooks/counter/artifacts/checksums_intermediate.txt create mode 100644 scripts/tests/ibc-hooks/counter/artifacts/counter.wasm create mode 100644 scripts/tests/ibc-hooks/counter/src/contract.rs create mode 100644 scripts/tests/ibc-hooks/counter/src/error.rs create mode 100644 scripts/tests/ibc-hooks/counter/src/helpers.rs create mode 100644 scripts/tests/ibc-hooks/counter/src/integration_tests.rs create mode 100644 scripts/tests/ibc-hooks/counter/src/lib.rs create mode 100644 scripts/tests/ibc-hooks/counter/src/msg.rs create mode 100644 scripts/tests/ibc-hooks/counter/src/state.rs create mode 100755 scripts/tests/ibc-hooks/increment.sh create mode 100755 scripts/tests/init-test-framework.sh create mode 100755 scripts/tweak-test-upgrade.sh rename scripts/upgrade/{init_deps.sh => init-deps.sh} (81%) mode change 100755 => 100644 create mode 100755 scripts/upgrade/localnode.sh create mode 100755 scripts/upgrade/setup-nix-polkadot.sh rename scripts/upgrade/{setup-old-centaurid-node.sh => setup-old-picad-node.sh} (53%) create mode 100644 scripts/upgrade/v_6_6_0/pre-script.sh create mode 100755 scripts/upgrade/v_6_6_0/setup-08-wasm.sh create mode 100755 scripts/upgrade/v_6_6_0/setup-relayer-account.sh create mode 100755 scripts/upload_contracts_new.sh create mode 100644 test create mode 100644 tests/interchaintest/contracts/ibchooks_counter.wasm create mode 100644 tests/interchaintest/forward_timeout_test.go create mode 100644 tests/interchaintest/helpers/cosmwasm.go create mode 100644 tests/interchaintest/helpers/ibchooks.go create mode 100644 tests/interchaintest/helpers/types.go create mode 100644 tests/interchaintest/ibc_transfer_cosmos_test.go create mode 100644 tests/interchaintest/module_ibchooks_test.go create mode 100644 tests/interchaintest/module_pfm_test.go create mode 100644 tests/interchaintest/packet_forward_test.go delete mode 100644 tests/interchaintest/upgrade_chain_test.go delete mode 100644 tests/interchaintest/validator_test.go create mode 100644 tmp-proposal.json delete mode 100644 x/ibc-hooks/relay_test.go diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a621353f6..cb827d789 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: - name: Setup go uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.22' - run: go build ./... tidy: @@ -34,7 +34,7 @@ jobs: - name: Setup go uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.22' - run: | go mod tidy CHANGES_IN_REPO=$(git status --porcelain) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 04a790f94..239a272b6 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -26,7 +26,7 @@ jobs: uses: actions/checkout@v4 - uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.22' # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v2 diff --git a/.github/workflows/interchaintest.yml b/.github/workflows/interchaintest.yml index 22731c0d5..214cd0a8a 100644 --- a/.github/workflows/interchaintest.yml +++ b/.github/workflows/interchaintest.yml @@ -38,10 +38,10 @@ jobs: runs-on: ubuntu-latest needs: build-and-push-image steps: - - name: Set up Go 1.20 + - name: Set up Go 1.22 uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.22' - name: checkout code uses: actions/checkout@v4 @@ -54,10 +54,10 @@ jobs: runs-on: ubuntu-latest needs: build-and-push-image steps: - - name: Set up Go 1.20 + - name: Set up Go 1.22 uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.22' - name: checkout code uses: actions/checkout@v4 @@ -70,10 +70,10 @@ jobs: runs-on: ubuntu-latest needs: build-and-push-image steps: - - name: Set up Go 1.20 + - name: Set up Go 1.22 uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.22' - name: checkout code uses: actions/checkout@v4 @@ -86,10 +86,10 @@ jobs: runs-on: ubuntu-latest needs: build-and-push-image steps: - - name: Set up Go 1.20 + - name: Set up Go 1.22 uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.22' - name: checkout code uses: actions/checkout@v4 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 0c27618f5..5390ff5a9 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -17,7 +17,7 @@ jobs: steps: - uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.22' - uses: actions/checkout@v4 - name: golangci-lint uses: golangci/golangci-lint-action@v3 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 55a2a0b76..aaf15dd1e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,7 +14,7 @@ jobs: - name: Install Go uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.22' - name: Checkout code uses: actions/checkout@v4 - name: Test diff --git a/.gitignore b/.gitignore index 58aecea72..c9fa1c668 100644 --- a/.gitignore +++ b/.gitignore @@ -54,4 +54,7 @@ _build/ mytestnet/ screenlog.0 -.idea \ No newline at end of file +.idea + + +node_modules \ No newline at end of file diff --git a/.golangci.yml b/.golangci.yml index c0844c760..dac2a5486 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -40,8 +40,7 @@ issues: - text: "ST1016:" linters: - stylecheck - - path: "migrations" - text: "SA1019:" + - text: "SA1019:" linters: - staticcheck - text: "leading space" diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 000000000..13566b81b --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/composable-cosmos.iml b/.idea/composable-cosmos.iml new file mode 100644 index 000000000..5e764c4f0 --- /dev/null +++ b/.idea/composable-cosmos.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 000000000..612c5a16e --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..861478f5b --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index cf3357ca3..72627c703 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -ARG GO_VERSION="1.20" +ARG GO_VERSION="1.22" ARG RUNNER_IMAGE="gcr.io/distroless/static-debian11" # -------------------------------------------------------- diff --git a/Makefile b/Makefile index 8d71579a0..e5ec23302 100644 --- a/Makefile +++ b/Makefile @@ -104,7 +104,7 @@ lint: ### Proto ### ############################################################################### -protoVer=0.12.1 +protoVer=0.14.0 protoImageName=ghcr.io/cosmos/proto-builder:$(protoVer) containerProtoGen=proto-gen-$(protoVer) containerProtoFmt=proto-fmt-$(protoVer) @@ -113,8 +113,7 @@ proto-all: proto-format proto-gen proto-gen: @echo "Generating Protobuf files" - @if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerProtoGen}$$"; then docker start -a $(containerProtoGen); else docker run --name $(containerProtoGen) -v $(CURDIR):/workspace --workdir /workspace $(protoImageName) \ - sh ./scripts/protocgen.sh; fi + @$(protoImage) sh ./scripts/protocgen.sh proto-format: @echo "Formatting Protobuf files" @@ -168,11 +167,66 @@ test-upgrade: clean-testing-data clean-testing-data: @echo "Killing binary and removing previous data" - -@pkill centaurid 2>/dev/null + echo "stopping picachain..." -@pkill picad 2>/dev/null - -@pkill rly 2>/dev/null -@rm -rf ./mytestnet + echo "stopping parachain..." + -@killall parachain-node + -@killall polkadot + + netstat -ltup | grep LISTEN + .PHONY: ictest-start-cosmos ictest-start-polkadot ictest-ibc ictest-push-wasm ictest-all -include contrib/make/release.mk \ No newline at end of file +include contrib/make/release.mk + + +test-upgrade: clean-testing-data + @echo "Starting upgrade test" + ./scripts/tweak-test-upgrade.sh + + + +## Scripts for testing sdk 50 +init-deps: + @echo "Installing dependencies" + bash ./scripts/upgrade/init-deps.sh + +localnet-pica: + @echo "Starting test" + rm -rf screenlog.0 + -@pkill picad 2>/dev/null + bash ./scripts/run-node.sh picad + bash ./scripts/50/store-wasm-code.sh + +localnet-parachain: + @echo "Starting localnet" + bash ./scripts/upgrade/setup-polkadot-node.sh + +relayer-create-clients: + @echo "Starting relayer" + bash ./scripts/relayer_hyperspace/create-clients.sh + +pica-upgrade: + @echo "Starting upgrade" + bash ./scripts/upgrade/upgrade. + +relayer-test-cleanup: + @echo "Cleaning up" + ./scripts/relayer_hyperspace/cleanup.sh +############################################################################### +### Integration Tests ### +############################################################################### + +integration-test-all: init-test-framework \ + test-ibc-hooks + +init-test-framework: clean-testing-data install + @echo "Initializing both blockchains..." + ./scripts/tests/init-test-framework.sh + ./scripts/relayer/relayer-init.sh + +test-ibc-hooks: + @echo "Testing ibc-hooks..." + ./scripts/tests/ibc-hooks/increment.sh diff --git a/app/ante/ante.go b/app/ante/ante.go index 360fa00fe..5508563b2 100644 --- a/app/ante/ante.go +++ b/app/ante/ante.go @@ -1,14 +1,16 @@ package ante import ( - ibcante "github.com/cosmos/ibc-go/v7/modules/core/ante" - ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" + circuitante "cosmossdk.io/x/circuit/ante" + circuitkeeper "cosmossdk.io/x/circuit/keeper" + ibcante "github.com/cosmos/ibc-go/v8/modules/core/ante" + ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" + "cosmossdk.io/x/tx/signing" "github.com/cosmos/cosmos-sdk/codec" servertypes "github.com/cosmos/cosmos-sdk/server/types" sdk "github.com/cosmos/cosmos-sdk/types" ante "github.com/cosmos/cosmos-sdk/x/auth/ante" - "github.com/cosmos/cosmos-sdk/x/auth/signing" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" tfmwKeeper "github.com/notional-labs/composable/v6/x/transfermiddleware/keeper" txBoundaryAnte "github.com/notional-labs/composable/v6/x/tx-boundary/ante" @@ -24,10 +26,11 @@ func NewAnteHandler( feegrantKeeper ante.FeegrantKeeper, txFeeChecker ante.TxFeeChecker, sigGasConsumer ante.SignatureVerificationGasConsumer, - signModeHandler signing.SignModeHandler, + signModeHandler *signing.HandlerMap, channelKeeper *ibckeeper.Keeper, tfmwKeeper tfmwKeeper.Keeper, txBoundaryKeeper txBoundaryKeeper.Keeper, + ck *circuitkeeper.Keeper, codec codec.BinaryCodec, ) sdk.AnteHandler { return sdk.ChainAnteDecorators( @@ -35,6 +38,7 @@ func NewAnteHandler( ante.NewValidateBasicDecorator(), ante.NewConsumeGasForTxSizeDecorator(ak), ante.NewDeductFeeDecorator(ak, bk, feegrantKeeper, txFeeChecker), + circuitante.NewCircuitBreakerDecorator(ck), ante.NewTxTimeoutHeightDecorator(), ante.NewValidateMemoDecorator(ak), ante.NewConsumeGasForTxSizeDecorator(ak), diff --git a/app/ante/ibc_ante.go b/app/ante/ibc_ante.go index bab820df4..e24641ab2 100644 --- a/app/ante/ibc_ante.go +++ b/app/ante/ibc_ante.go @@ -8,7 +8,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/authz" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" tfmwKeeper "github.com/notional-labs/composable/v6/x/transfermiddleware/keeper" ) diff --git a/app/app.go b/app/app.go index f3f036fb6..5739e0075 100644 --- a/app/app.go +++ b/app/app.go @@ -5,25 +5,36 @@ import ( "io" "os" "path/filepath" - "strings" - "github.com/notional-labs/composable/v6/app/upgrades/v6_6_4" + "cosmossdk.io/client/v2/autocli" + "cosmossdk.io/core/appmodule" + + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + runtimeservices "github.com/cosmos/cosmos-sdk/runtime/services" + authcodec "github.com/cosmos/cosmos-sdk/x/auth/codec" + + "cosmossdk.io/x/circuit" + circuittypes "cosmossdk.io/x/circuit/types" nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" + "github.com/cosmos/cosmos-sdk/std" authante "github.com/cosmos/cosmos-sdk/x/auth/ante" authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" "github.com/cosmos/cosmos-sdk/x/authz" "github.com/cosmos/cosmos-sdk/x/consensus" - tendermint "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - wasm08 "github.com/cosmos/ibc-go/v7/modules/light-clients/08-wasm" - wasm08keeper "github.com/cosmos/ibc-go/v7/modules/light-clients/08-wasm/keeper" + "github.com/cosmos/gogoproto/proto" + wasm08 "github.com/cosmos/ibc-go/modules/light-clients/08-wasm" + wasm08keeper "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/keeper" + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" + tendermint "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" - wasm08types "github.com/cosmos/ibc-go/v7/modules/light-clients/08-wasm/types" + wasm08types "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" + "github.com/cosmos/cosmos-sdk/client/grpc/cmtservice" "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/server/api" "github.com/cosmos/cosmos-sdk/server/config" @@ -38,36 +49,36 @@ import ( "github.com/cosmos/cosmos-sdk/x/bank" "github.com/notional-labs/composable/v6/app/keepers" + "github.com/notional-labs/composable/v6/app/upgrades/v7_0_1" // bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" - + "cosmossdk.io/x/evidence" + evidencetypes "cosmossdk.io/x/evidence/types" + "cosmossdk.io/x/feegrant" + feegrantmodule "cosmossdk.io/x/feegrant/module" + "cosmossdk.io/x/tx/signing" authzmodule "github.com/cosmos/cosmos-sdk/x/authz/module" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/capability" - capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" "github.com/cosmos/cosmos-sdk/x/crisis" crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" distr "github.com/cosmos/cosmos-sdk/x/distribution" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - "github.com/cosmos/cosmos-sdk/x/evidence" - evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" - "github.com/cosmos/cosmos-sdk/x/feegrant" - feegrantmodule "github.com/cosmos/cosmos-sdk/x/feegrant/module" "github.com/cosmos/cosmos-sdk/x/genutil" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" "github.com/cosmos/cosmos-sdk/x/gov" govclient "github.com/cosmos/cosmos-sdk/x/gov/client" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/cosmos/ibc-go/modules/capability" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" "github.com/cosmos/cosmos-sdk/x/group" groupmodule "github.com/cosmos/cosmos-sdk/x/group/module" - dbm "github.com/cometbft/cometbft-db" + "cosmossdk.io/log" abci "github.com/cometbft/cometbft/abci/types" tmjson "github.com/cometbft/cometbft/libs/json" - "github.com/cometbft/cometbft/libs/log" tmos "github.com/cometbft/cometbft/libs/os" + dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/x/params" paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" @@ -75,30 +86,22 @@ import ( slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" "github.com/cosmos/cosmos-sdk/x/staking" + "cosmossdk.io/x/upgrade" + upgradetypes "cosmossdk.io/x/upgrade/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/cosmos/cosmos-sdk/x/upgrade" - upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - ica "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts" - icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - "github.com/cosmos/ibc-go/v7/modules/apps/transfer" - ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper" - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - ibc "github.com/cosmos/ibc-go/v7/modules/core" - ibcclientclient "github.com/cosmos/ibc-go/v7/modules/core/02-client/client" - ibchost "github.com/cosmos/ibc-go/v7/modules/core/exported" - ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" + icq "github.com/cosmos/ibc-apps/modules/async-icq/v8" + icqtypes "github.com/cosmos/ibc-apps/modules/async-icq/v8/types" + ica "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts" + icatypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/types" + "github.com/cosmos/ibc-go/v8/modules/apps/transfer" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + ibc "github.com/cosmos/ibc-go/v8/modules/core" customibctransfer "github.com/notional-labs/composable/v6/custom/ibc-transfer" customstaking "github.com/notional-labs/composable/v6/custom/staking" "github.com/spf13/cast" - icq "github.com/strangelove-ventures/async-icq/v7" - icqtypes "github.com/strangelove-ventures/async-icq/v7/types" - router "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward" - routertypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types" - alliancemodule "github.com/terra-money/alliance/x/alliance" - alliancemoduleclient "github.com/terra-money/alliance/x/alliance/client" - alliancemoduletypes "github.com/terra-money/alliance/x/alliance/types" + pfm "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward" + pfmtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/types" custombankmodule "github.com/notional-labs/composable/v6/custom/bank" @@ -119,8 +122,6 @@ import ( "github.com/notional-labs/composable/v6/x/mint" minttypes "github.com/notional-labs/composable/v6/x/mint/types" - ibctestingtypes "github.com/cosmos/ibc-go/v7/testing/types" - ibc_hooks "github.com/notional-labs/composable/v6/x/ibc-hooks" ibchookstypes "github.com/notional-labs/composable/v6/x/ibc-hooks/types" @@ -148,27 +149,10 @@ var ( // https://github.com/CosmWasm/wasmd/blob/02a54d33ff2c064f3539ae12d75d027d9c665f05/x/wasm/internal/types/proposal.go#L28-L34 EnableSpecificProposals = "" - Upgrades = []upgrades.Upgrade{v6_6_4.Upgrade} + Upgrades = []upgrades.Upgrade{v7_0_1.Upgrade} Forks = []upgrades.Fork{} ) -// GetEnabledProposals parses the ProposalsEnabled / EnableSpecificProposals values to -// produce a list of enabled proposals to pass into wasmd app. -func GetEnabledProposals() []wasm.ProposalType { - if EnableSpecificProposals == "" { - if ProposalsEnabled == "true" { - return wasm.EnableAllProposals - } - return wasm.DisableAllProposals - } - chunks := strings.Split(EnableSpecificProposals, ",") - proposals, err := wasm.ConvertToProposals(chunks) - if err != nil { - panic(err) - } - return proposals -} - // this line is used by starport scaffolding # stargate/wasm/app/enabledProposals func getGovProposalHandlers() []govclient.ProposalHandler { @@ -177,13 +161,6 @@ func getGovProposalHandlers() []govclient.ProposalHandler { govProposalHandlers = append(govProposalHandlers, paramsclient.ProposalHandler, - upgradeclient.LegacyProposalHandler, - upgradeclient.LegacyCancelProposalHandler, - ibcclientclient.UpdateClientProposalHandler, - ibcclientclient.UpgradeProposalHandler, - alliancemoduleclient.CreateAllianceProposalHandler, - alliancemoduleclient.UpdateAllianceProposalHandler, - alliancemoduleclient.DeleteAllianceProposalHandler, // this line is used by starport scaffolding # stargate/app/govProposalHandler ) @@ -219,18 +196,18 @@ var ( vesting.AppModuleBasic{}, tendermint.AppModuleBasic{}, mint.AppModuleBasic{}, - wasm08.AppModuleBasic{}, wasm.AppModuleBasic{}, - router.AppModuleBasic{}, + pfm.AppModuleBasic{}, ica.AppModuleBasic{}, ibc_hooks.AppModuleBasic{}, transfermiddleware.AppModuleBasic{}, txBoundary.AppModuleBasic{}, ratelimitmodule.AppModuleBasic{}, consensus.AppModuleBasic{}, - alliancemodule.AppModuleBasic{}, stakingmiddleware.AppModuleBasic{}, ibctransfermiddleware.AppModuleBasic{}, + circuit.AppModuleBasic{}, + wasm08.AppModuleBasic{}, // this line is used by starport scaffolding # stargate/app/moduleBasic ) @@ -239,15 +216,13 @@ var ( authtypes.FeeCollectorName: nil, distrtypes.ModuleName: nil, // mint module needs burn access to remove excess validator tokens (it overallocates, then burns) - minttypes.ModuleName: {authtypes.Minter}, - stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, - stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, - govtypes.ModuleName: {authtypes.Burner}, - transfermiddlewaretypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - alliancemoduletypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - alliancemoduletypes.RewardsPoolName: nil, - icatypes.ModuleName: nil, + minttypes.ModuleName: {authtypes.Minter}, + stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, + stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, + govtypes.ModuleName: {authtypes.Burner}, + transfermiddlewaretypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + icatypes.ModuleName: nil, // this line is used by starport scaffolding # stargate/app/maccPerms } ) @@ -275,12 +250,13 @@ type ComposableApp struct { cdc *codec.LegacyAmino appCodec codec.Codec interfaceRegistry types.InterfaceRegistry + txConfig client.TxConfig + invCheckPeriod uint - invCheckPeriod uint - - mm *module.Manager - sm *module.SimulationManager - configurator module.Configurator + mm *module.Manager + basicModuleManger module.BasicManager + sm *module.SimulationManager + configurator module.Configurator } // RUN GOSEC @@ -290,36 +266,52 @@ func NewComposableApp( db dbm.DB, traceStore io.Writer, loadLatest bool, - enabledProposals []wasm.ProposalType, skipUpgradeHeights map[int64]bool, homePath string, invCheckPeriod uint, - encodingConfig EncodingConfig, appOpts servertypes.AppOptions, - wasmOpts []wasm.Option, baseAppOptions ...func(*baseapp.BaseApp), ) *ComposableApp { - appCodec := encodingConfig.Marshaler - cdc := encodingConfig.Amino - interfaceRegistry := encodingConfig.InterfaceRegistry + interfaceRegistry, err := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{ + ProtoFiles: proto.HybridResolver, + SigningOptions: signing.Options{ + AddressCodec: address.Bech32Codec{ + Bech32Prefix: sdk.GetConfig().GetBech32AccountAddrPrefix(), + }, + ValidatorAddressCodec: address.Bech32Codec{ + Bech32Prefix: sdk.GetConfig().GetBech32ValidatorAddrPrefix(), + }, + }, + }) + if err != nil { + panic(err) + } + + appCodec := codec.NewProtoCodec(interfaceRegistry) + legacyAmino := codec.NewLegacyAmino() + txConfig := authtx.NewTxConfig(appCodec, authtx.DefaultSignModes) - bApp := baseapp.NewBaseApp(Name, logger, db, encodingConfig.TxConfig.TxDecoder(), baseAppOptions...) + std.RegisterLegacyAminoCodec(legacyAmino) + std.RegisterInterfaces(interfaceRegistry) + + bApp := baseapp.NewBaseApp(Name, logger, db, txConfig.TxDecoder(), baseAppOptions...) bApp.SetCommitMultiStoreTracer(traceStore) bApp.SetInterfaceRegistry(interfaceRegistry) - bApp.SetTxEncoder(encodingConfig.TxConfig.TxEncoder()) + bApp.SetTxEncoder(txConfig.TxEncoder()) app := &ComposableApp{ BaseApp: bApp, AppKeepers: keepers.AppKeepers{}, - cdc: cdc, + cdc: legacyAmino, appCodec: appCodec, interfaceRegistry: interfaceRegistry, invCheckPeriod: invCheckPeriod, + txConfig: txConfig, } app.InitSpecialKeepers( appCodec, - cdc, + legacyAmino, bApp, invCheckPeriod, skipUpgradeHeights, @@ -327,25 +319,24 @@ func NewComposableApp( ) app.setupUpgradeStoreLoaders() app.InitNormalKeepers( + logger, appCodec, - cdc, + legacyAmino, bApp, maccPerms, invCheckPeriod, skipUpgradeHeights, homePath, appOpts, - wasmOpts, - enabledProposals, ) // transferModule := transfer.NewAppModule(app.TransferKeeper) transferModule := customibctransfer.NewAppModule(appCodec, app.TransferKeeper, app.BankKeeper) - routerModule := router.NewAppModule(app.RouterKeeper) + pfmModule := pfm.NewAppModule(app.PfmKeeper, app.GetSubspace(pfmtypes.ModuleName)) transfermiddlewareModule := transfermiddleware.NewAppModule(&app.TransferMiddlewareKeeper) txBoundaryModule := txBoundary.NewAppModule(appCodec, app.TxBoundaryKeepper) ratelimitModule := ratelimitmodule.NewAppModule(&app.RatelimitKeeper) - icqModule := icq.NewAppModule(app.ICQKeeper) + icqModule := icq.NewAppModule(app.ICQKeeper, app.GetSubspace(icqtypes.ModuleName)) ibcHooksModule := ibc_hooks.NewAppModule() icaModule := ica.NewAppModule(nil, &app.ICAHostKeeper) // Only ICA Host /**** Module Options ****/ @@ -359,9 +350,10 @@ func NewComposableApp( app.mm = module.NewManager( genutil.NewAppModule( - app.AccountKeeper, app.StakingKeeper, app.BaseApp.DeliverTx, - encodingConfig.TxConfig, + app.AccountKeeper, app.StakingKeeper, app, + txConfig, ), + auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), vesting.NewAppModule(app.AccountKeeper, app.BankKeeper), custombankmodule.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), @@ -371,13 +363,13 @@ func NewComposableApp( crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)), mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil), - slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName)), + slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName), app.interfaceRegistry), distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)), customstaking.NewAppModule(appCodec, *app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), stakingmiddleware.NewAppModule(appCodec, app.StakingMiddlewareKeeper), ibctransfermiddleware.NewAppModule(appCodec, app.IbcTransferMiddlewareKeeper), authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), - upgrade.NewAppModule(app.UpgradeKeeper), + upgrade.NewAppModule(app.UpgradeKeeper, app.AccountKeeper.AddressCodec()), evidence.NewAppModule(app.EvidenceKeeper), ibc.NewAppModule(app.IBCKeeper), params.NewAppModule(app.ParamsKeeper), @@ -387,15 +379,23 @@ func NewComposableApp( consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), wasm08.NewAppModule(app.Wasm08Keeper), wasm.NewAppModule(appCodec, &app.WasmKeeper, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.MsgServiceRouter(), app.GetSubspace(wasmtypes.ModuleName)), - routerModule, + pfmModule, transfermiddlewareModule, txBoundaryModule, icaModule, ratelimitModule, - alliancemodule.NewAppModule(appCodec, app.AllianceKeeper, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), + circuit.NewAppModule(appCodec, app.CircuitKeeper), // this line is used by starport scaffolding # stargate/app/appModule ) + app.basicModuleManger = ModuleBasics + app.basicModuleManger.RegisterLegacyAminoCodec(legacyAmino) + app.basicModuleManger.RegisterInterfaces(interfaceRegistry) + + app.mm.SetOrderPreBlockers( + upgradetypes.ModuleName, + ) + // During begin block slashing happens after distr.BeginBlocker so that // there is nothing left over in the validator fee pool, so as to keep the // CanWithdrawInvariant invariant. @@ -409,9 +409,9 @@ func NewComposableApp( evidencetypes.ModuleName, stakingtypes.ModuleName, vestingtypes.ModuleName, - ibchost.ModuleName, + ibcexported.ModuleName, ibctransfertypes.ModuleName, - routertypes.ModuleName, + pfmtypes.ModuleName, transfermiddlewaretypes.ModuleName, txBoundaryTypes.ModuleName, ratelimitmoduletypes.ModuleName, @@ -427,12 +427,12 @@ func NewComposableApp( group.ModuleName, paramstypes.ModuleName, consensusparamtypes.ModuleName, - wasm08types.ModuleName, + circuittypes.ModuleName, icatypes.ModuleName, - wasm.ModuleName, - alliancemoduletypes.ModuleName, + wasmtypes.ModuleName, stakingmiddlewaretypes.ModuleName, ibctransfermiddlewaretypes.ModuleName, + wasm08types.ModuleName, // this line is used by starport scaffolding # stargate/app/beginBlockers ) @@ -447,6 +447,7 @@ func NewComposableApp( distrtypes.ModuleName, slashingtypes.ModuleName, vestingtypes.ModuleName, + ibcexported.ModuleName, genutiltypes.ModuleName, evidencetypes.ModuleName, authz.ModuleName, @@ -454,8 +455,7 @@ func NewComposableApp( group.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, - ibchost.ModuleName, - routertypes.ModuleName, + pfmtypes.ModuleName, transfermiddlewaretypes.ModuleName, txBoundaryTypes.ModuleName, ratelimitmoduletypes.ModuleName, @@ -463,12 +463,12 @@ func NewComposableApp( ibctransfertypes.ModuleName, icqtypes.ModuleName, consensusparamtypes.ModuleName, - wasm08types.ModuleName, + circuittypes.ModuleName, icatypes.ModuleName, - wasm.ModuleName, - alliancemoduletypes.ModuleName, + wasmtypes.ModuleName, stakingmiddlewaretypes.ModuleName, ibctransfermiddlewaretypes.ModuleName, + wasm08types.ModuleName, ) // NOTE: The genutils module must occur after staking so that pools are @@ -487,7 +487,7 @@ func NewComposableApp( govtypes.ModuleName, minttypes.ModuleName, crisistypes.ModuleName, - ibchost.ModuleName, + ibcexported.ModuleName, genutiltypes.ModuleName, evidencetypes.ModuleName, authz.ModuleName, @@ -495,7 +495,7 @@ func NewComposableApp( upgradetypes.ModuleName, ibctransfertypes.ModuleName, icqtypes.ModuleName, - routertypes.ModuleName, + pfmtypes.ModuleName, transfermiddlewaretypes.ModuleName, txBoundaryTypes.ModuleName, ratelimitmoduletypes.ModuleName, @@ -503,18 +503,22 @@ func NewComposableApp( feegrant.ModuleName, group.ModuleName, consensusparamtypes.ModuleName, - wasm08types.ModuleName, + circuittypes.ModuleName, icatypes.ModuleName, - wasm.ModuleName, - alliancemoduletypes.ModuleName, + wasmtypes.ModuleName, stakingmiddlewaretypes.ModuleName, ibctransfermiddlewaretypes.ModuleName, + wasm08types.ModuleName, // this line is used by starport scaffolding # stargate/app/initGenesis ) app.mm.RegisterInvariants(app.CrisisKeeper) app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) - app.mm.RegisterServices(app.configurator) + + err = app.mm.RegisterServices(app.configurator) + if err != nil { + panic(err) + } app.setupUpgradeHandlers() @@ -550,6 +554,7 @@ func NewComposableApp( // initialize BaseApp app.SetInitChainer(app.InitChainer) + app.SetPreBlocker(app.PreBlocker) app.SetBeginBlocker(app.BeginBlocker) app.SetAnteHandler(ante.NewAnteHandler( @@ -559,10 +564,11 @@ func NewComposableApp( app.FeeGrantKeeper, nil, authante.DefaultSigVerificationGasConsumer, - encodingConfig.TxConfig.SignModeHandler(), + txConfig.SignModeHandler(), app.IBCKeeper, app.TransferMiddlewareKeeper, app.TxBoundaryKeepper, + &app.CircuitKeeper, appCodec, )) app.SetEndBlocker(app.EndBlocker) @@ -581,6 +587,15 @@ func NewComposableApp( if err := app.LoadLatestVersion(); err != nil { tmos.Exit(err.Error()) } + ctx := app.BaseApp.NewUncachedContext(true, tmproto.Header{}) + // Initialize pinned codes in wasmvm as they are not persisted there + if err := app.WasmKeeper.InitializePinnedCodes(ctx); err != nil { + tmos.Exit(fmt.Sprintf("failed initialize pinned codes %s", err)) + } + + // if err := wasm08keeper.InitializePinnedCodes(ctx); err != nil { + // tmos.Exit(fmt.Sprintf("failed initialize pinned codes %s", err)) + //} } return app @@ -589,48 +604,28 @@ func NewComposableApp( // Name returns the name of the App func (app *ComposableApp) Name() string { return app.BaseApp.Name() } -// GetBaseApp returns the base app of the application -func (app *ComposableApp) GetBaseApp() *baseapp.BaseApp { return app.BaseApp } - -// GetStakingKeeper implements the TestingApp interface. -func (app *ComposableApp) GetStakingKeeper() ibctestingtypes.StakingKeeper { - return app.StakingKeeper -} - -// GetIBCKeeper implements the TestingApp interface. -func (app *ComposableApp) GetTransferKeeper() *ibctransferkeeper.Keeper { - return &app.TransferKeeper.Keeper -} - -// GetIBCKeeper implements the TestingApp interface. -func (app *ComposableApp) GetIBCKeeper() *ibckeeper.Keeper { - return app.IBCKeeper -} - -// GetScopedIBCKeeper implements the TestingApp interface. -func (app *ComposableApp) GetScopedIBCKeeper() capabilitykeeper.ScopedKeeper { - return app.ScopedIBCKeeper +// BeginBlocker application updates every begin block +func (app *ComposableApp) BeginBlocker(ctx sdk.Context) (sdk.BeginBlock, error) { + BeginBlockForks(ctx, app) + return app.mm.BeginBlock(ctx) } -// GetTxConfig implements the TestingApp interface. -func (app *ComposableApp) GetTxConfig() client.TxConfig { - cfg := MakeEncodingConfig() - return cfg.TxConfig +// EndBlocker application updates every end block +func (app *ComposableApp) EndBlocker(ctx sdk.Context) (sdk.EndBlock, error) { + return app.mm.EndBlock(ctx) } -// BeginBlocker application updates every begin block -func (app *ComposableApp) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock { - BeginBlockForks(ctx, app) - return app.mm.BeginBlock(ctx, req) +func (app *ComposableApp) PreBlocker(ctx sdk.Context, _ *abci.RequestFinalizeBlock) (*sdk.ResponsePreBlock, error) { + return app.mm.PreBlock(ctx) } -// EndBlocker application updates every end block -func (app *ComposableApp) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock { - return app.mm.EndBlock(ctx, req) +// TxConfig returns MigalooApp's TxConfig +func (app *ComposableApp) TxConfig() client.TxConfig { + return app.txConfig } // InitChainer application update at chain initialization -func (app *ComposableApp) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain { +func (app *ComposableApp) InitChainer(ctx sdk.Context, req *abci.RequestInitChain) (*abci.ResponseInitChain, error) { var genesisState GenesisState if err := tmjson.Unmarshal(req.AppStateBytes, &genesisState); err != nil { panic(err) @@ -683,7 +678,7 @@ func (app *ComposableApp) RegisterAPIRoutes(apiSvr *api.Server, _ config.APIConf // Register new tx routes from grpc-gateway. authtx.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) // Register new tendermint queries routes from grpc-gateway. - tmservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) + cmtservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) nodeservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) @@ -697,12 +692,12 @@ func (app *ComposableApp) RegisterTxService(clientCtx client.Context) { // RegisterTendermintService implements the Application.RegisterTendermintService method. func (app *ComposableApp) RegisterTendermintService(clientCtx client.Context) { - tmservice.RegisterTendermintService(clientCtx, app.BaseApp.GRPCQueryRouter(), app.interfaceRegistry, app.Query) + cmtservice.RegisterTendermintService(clientCtx, app.BaseApp.GRPCQueryRouter(), app.interfaceRegistry, app.Query) } // RegisterNodeService registers the node gRPC Query service. -func (app *ComposableApp) RegisterNodeService(clientCtx client.Context) { - nodeservice.RegisterNodeService(clientCtx, app.GRPCQueryRouter()) +func (app *ComposableApp) RegisterNodeService(clientCtx client.Context, cfg config.Config) { + nodeservice.RegisterNodeService(clientCtx, app.GRPCQueryRouter(), cfg) } // GetMaccPerms returns a copy of the module account permissions @@ -764,3 +759,24 @@ func (app *ComposableApp) setupUpgradeHandlers() { ) } } + +// AutoCliOpts returns the autocli options for the app. +func (app *ComposableApp) AutoCliOpts() autocli.AppOptions { + modules := make(map[string]appmodule.AppModule, 0) + for _, m := range app.mm.Modules { + if moduleWithName, ok := m.(module.HasName); ok { + moduleName := moduleWithName.Name() + if appModule, ok := moduleWithName.(appmodule.AppModule); ok { + modules[moduleName] = appModule + } + } + } + + return autocli.AppOptions{ + Modules: modules, + ModuleOptions: runtimeservices.ExtractAutoCLIOptions(app.mm.Modules), + AddressCodec: authcodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()), + ValidatorAddressCodec: authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()), + ConsensusAddressCodec: authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()), + } +} diff --git a/app/encoding.go b/app/encoding.go index 60535a84c..e53fde4ee 100644 --- a/app/encoding.go +++ b/app/encoding.go @@ -1,11 +1,15 @@ package app import ( + "cosmossdk.io/x/tx/signing" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/std" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/tx" + "github.com/cosmos/gogoproto/proto" ) // This data structure (EncodingConfig) is heavily inspired by Quicksilver. https://github.com/ingenuity-build/quicksilver/blob/main/app/encoding.go @@ -19,7 +23,21 @@ type EncodingConfig struct { // MakeEncodingConfig creates an EncodingConfig for an amino based test configuration. func MakeEncodingConfig() EncodingConfig { amino := codec.NewLegacyAmino() - interfaceRegistry := types.NewInterfaceRegistry() + interfaceRegistry, err := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{ + ProtoFiles: proto.HybridResolver, + SigningOptions: signing.Options{ + AddressCodec: address.Bech32Codec{ + Bech32Prefix: sdk.GetConfig().GetBech32AccountAddrPrefix(), + }, + ValidatorAddressCodec: address.Bech32Codec{ + Bech32Prefix: sdk.GetConfig().GetBech32ValidatorAddrPrefix(), + }, + }, + }) + if err != nil { + panic(err) + } + marshaler := codec.NewProtoCodec(interfaceRegistry) txCfg := tx.NewTxConfig(marshaler, tx.DefaultSignModes) diff --git a/app/export.go b/app/export.go index a33330220..5229486a3 100644 --- a/app/export.go +++ b/app/export.go @@ -4,8 +4,7 @@ import ( "encoding/json" "log" - tmproto "github.com/cometbft/cometbft/proto/tendermint/types" - + storetypes "cosmossdk.io/store/types" servertypes "github.com/cosmos/cosmos-sdk/server/types" sdk "github.com/cosmos/cosmos-sdk/types" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" @@ -19,7 +18,7 @@ func (app *ComposableApp) ExportAppStateAndValidators( forZeroHeight bool, jailAllowedAddrs []string, ) (servertypes.ExportedApp, error) { // as if they could withdraw from the start of the next block - ctx := app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()}) + ctx := app.NewContext(true) // We export at last height + 1, because that's the height at which // Tendermint will start InitChain. @@ -29,7 +28,11 @@ func (app *ComposableApp) ExportAppStateAndValidators( app.prepForZeroHeightGenesis(ctx, jailAllowedAddrs) } - genState := app.mm.ExportGenesis(ctx, app.appCodec) + genState, err := app.mm.ExportGenesis(ctx, app.appCodec) + if err != nil { + return servertypes.ExportedApp{}, err + } + appState, err := json.MarshalIndent(genState, "", " ") if err != nil { return servertypes.ExportedApp{}, err @@ -76,12 +79,17 @@ func (app *ComposableApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedA // withdraw all validator commission app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { - accumCommission := app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, val.GetOperator()) + valAddr, err := sdk.ValAddressFromBech32(val.GetOperator()) + if err != nil { + panic(err) + } + + accumCommission, _ := app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddr) if accumCommission.Commission.IsZero() { return false } - _, err := app.DistrKeeper.WithdrawValidatorCommission(ctx, val.GetOperator()) + _, err = app.DistrKeeper.WithdrawValidatorCommission(ctx, valAddr) if err != nil { panic(err) } @@ -90,7 +98,10 @@ func (app *ComposableApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedA }) // withdraw all delegator rewards - dels := app.StakingKeeper.GetAllDelegations(ctx) + dels, err := app.StakingKeeper.GetAllDelegations(ctx) + if err != nil { + panic(err) + } for _, delegation := range dels { valAddr, err := sdk.ValAddressFromBech32(delegation.ValidatorAddress) if err != nil { @@ -117,12 +128,25 @@ func (app *ComposableApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedA // reinitialize all validators app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { // donate any unwithdrawn outstanding reward fraction tokens to the community pool - scraps := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, val.GetOperator()) - feePool := app.DistrKeeper.GetFeePool(ctx) + valAddr, err := sdk.ValAddressFromBech32(val.GetOperator()) + if err != nil { + panic(err) + } + + scraps, _ := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, valAddr) + + feePool, err := app.DistrKeeper.FeePool.Get(ctx) + if err != nil { + panic(err) + } + feePool.CommunityPool = feePool.CommunityPool.Add(scraps...) - app.DistrKeeper.SetFeePool(ctx, feePool) + err = app.DistrKeeper.FeePool.Set(ctx, feePool) + if err != nil { + panic(err) + } - err := app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, val.GetOperator()) + err = app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, valAddr) if err != nil { panic(err) } @@ -175,15 +199,15 @@ func (app *ComposableApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedA // Iterate through validators by power descending, reset bond heights, and // update bond intra-tx counters. store := ctx.KVStore(app.GetKey(stakingtypes.StoreKey)) - iter := sdk.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey) + iter := storetypes.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey) counter := int16(0) for ; iter.Valid(); iter.Next() { addr := sdk.ValAddress(stakingtypes.AddressFromValidatorsKey(iter.Key())) - validator, found := app.StakingKeeper.GetValidator(ctx, addr) - if !found { - panic("expected validator, not found") + validator, err := app.StakingKeeper.GetValidator(ctx, addr) + if err != nil { + panic(err) } validator.UnbondingHeight = 0 @@ -197,7 +221,7 @@ func (app *ComposableApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedA iter.Close() - _, err := app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + _, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) if err != nil { log.Fatal(err) } diff --git a/app/helpers/test_helpers.go b/app/helpers/test_helpers.go index 1646262fa..c13bdab9d 100644 --- a/app/helpers/test_helpers.go +++ b/app/helpers/test_helpers.go @@ -2,19 +2,15 @@ package helpers import ( "encoding/json" - "fmt" "testing" "time" + "cosmossdk.io/log" "cosmossdk.io/math" - "github.com/CosmWasm/wasmd/x/wasm" - wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" - dbm "github.com/cometbft/cometbft-db" abci "github.com/cometbft/cometbft/abci/types" - "github.com/cometbft/cometbft/libs/log" - tmrand "github.com/cometbft/cometbft/libs/rand" tmproto "github.com/cometbft/cometbft/proto/tendermint/types" tmtypes "github.com/cometbft/cometbft/types" + dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/baseapp" codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" @@ -24,7 +20,7 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/cosmos/ibc-go/v7/testing/mock" + "github.com/cosmos/ibc-go/v8/testing/mock" "github.com/stretchr/testify/require" composable "github.com/notional-labs/composable/v6/app" @@ -59,49 +55,21 @@ type EmptyAppOptions struct{} func (EmptyAppOptions) Get(_ string) interface{} { return nil } func NewContextForApp(app composable.ComposableApp) sdk.Context { - ctx := app.BaseApp.NewContext(false, tmproto.Header{ - ChainID: fmt.Sprintf("test-chain-%s", tmrand.Str(4)), - Height: 1, - }) + ctx := app.BaseApp.NewContext(false) return ctx } -func Setup(t *testing.T, isCheckTx bool, invCheckPeriod uint) *composable.ComposableApp { - t.Helper() - app, genesisState := setup(!isCheckTx, invCheckPeriod) - if !isCheckTx { - // InitChain must be called to stop deliverState from being nil - stateBytes, err := json.MarshalIndent(genesisState, "", " ") - require.NoError(t, err) - - // Initialize the chain - app.InitChain( - abci.RequestInitChain{ - Validators: []abci.ValidatorUpdate{}, - ConsensusParams: DefaultConsensusParams, - AppStateBytes: stateBytes, - }, - ) - } - - return app -} - -func setup(withGenesis bool, invCheckPeriod uint, opts ...wasm.Option) (*composable.ComposableApp, composable.GenesisState) { +func setup(withGenesis bool, invCheckPeriod uint) (*composable.ComposableApp, composable.GenesisState) { db := dbm.NewMemDB() - encCdc := composable.MakeEncodingConfig() app := composable.NewComposableApp( log.NewNopLogger(), db, nil, true, - wasmtypes.EnableAllProposals, map[int64]bool{}, composable.DefaultNodeHome, invCheckPeriod, - encCdc, EmptyAppOptions{}, - opts, ) if withGenesis { return app, composable.NewDefaultGenesisState() @@ -124,29 +92,27 @@ func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs baseapp.SetChainID(chainID)(app.GetBaseApp()) // init chain will set the validator set and initialize the genesis accounts - app.InitChain( - abci.RequestInitChain{ + _, err = app.InitChain( + &abci.RequestInitChain{ ChainId: chainID, Validators: []abci.ValidatorUpdate{}, ConsensusParams: DefaultConsensusParams, + InitialHeight: app.LastBlockHeight() + 1, AppStateBytes: stateBytes, }, ) + if err != nil { + panic(err) + } - // commit genesis changes - // app.BaseApp.Set - app.Commit() - app.BeginBlock( - abci.RequestBeginBlock{ - Header: tmproto.Header{ - ChainID: chainID, - Height: app.LastBlockHeight() + 1, - AppHash: app.LastCommitID().Hash, - ValidatorsHash: valSet.Hash(), - NextValidatorsHash: valSet.Hash(), - }, - }, - ) + _, err = app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: app.LastBlockHeight() + 1, + Hash: app.LastCommitID().Hash, + NextValidatorsHash: valSet.Hash(), + }) + if err != nil { + panic(err) + } return app } @@ -165,7 +131,7 @@ func SetupComposableAppWithValSet(t *testing.T) *composable.ComposableApp { // generate genesis account senderPrivKey := secp256k1.GenPrivKey() acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), 0, 0) - amount, ok := sdk.NewIntFromString("10000000000000000000") + amount, ok := math.NewIntFromString("10000000000000000000") require.True(t, ok) balance := banktypes.Balance{ @@ -191,7 +157,7 @@ func SetupComposableAppWithValSetWithGenAccout(t *testing.T) (*composable.Compos // generate genesis account senderPrivKey := secp256k1.GenPrivKey() acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), 0, 0) - amount, ok := sdk.NewIntFromString("10000000000000000000") + amount, ok := math.NewIntFromString("10000000000000000000") require.True(t, ok) balance := banktypes.Balance{ @@ -201,6 +167,7 @@ func SetupComposableAppWithValSetWithGenAccout(t *testing.T) (*composable.Compos validators := make([]stakingtypes.Validator, 0, len(valSet.Validators)) for _, val := range valSet.Validators { + //lint:ignore SA1019 pk, _ := cryptocodec.FromTmPubKeyInterface(val.PubKey) pkAny, _ := codectypes.NewAnyWithValue(pk) diff --git a/app/ibctesting/chain.go b/app/ibctesting/chain.go index c2082b7b6..36357591d 100644 --- a/app/ibctesting/chain.go +++ b/app/ibctesting/chain.go @@ -1,21 +1,32 @@ package ibctesting import ( - "bytes" - "crypto/sha256" + "context" "fmt" - "os" "testing" "time" - ratelimitmodulekeeper "github.com/notional-labs/composable/v6/x/ratelimit/keeper" + wasm08 "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/keeper" "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" + storetypes "cosmossdk.io/store/types" + + servertypes "github.com/cosmos/cosmos-sdk/server/types" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + "github.com/cosmos/cosmos-sdk/x/staking/testutil" + packetforwardkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/keeper" + capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" + customibctransferkeeper "github.com/notional-labs/composable/v6/custom/ibc-transfer/keeper" + transfermiddlewarekeeper "github.com/notional-labs/composable/v6/x/transfermiddleware/keeper" + + ratelimitmodulekeeper "github.com/notional-labs/composable/v6/x/ratelimit/keeper" + + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" abci "github.com/cometbft/cometbft/abci/types" "github.com/cometbft/cometbft/crypto/tmhash" tmproto "github.com/cometbft/cometbft/proto/tendermint/types" - tmprotoversion "github.com/cometbft/cometbft/proto/tendermint/version" - tmtypes "github.com/cometbft/cometbft/types" + cmttypes "github.com/cometbft/cometbft/types" tmversion "github.com/cometbft/cometbft/version" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" @@ -24,41 +35,62 @@ import ( cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" - bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" - govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" - v1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" - "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - - "github.com/CosmWasm/wasmd/x/wasm" - wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" - wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - teststaking "github.com/cosmos/cosmos-sdk/x/staking/testutil" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - commitmenttypes "github.com/cosmos/ibc-go/v7/modules/core/23-commitment/types" - host "github.com/cosmos/ibc-go/v7/modules/core/24-host" - "github.com/cosmos/ibc-go/v7/modules/core/exported" - ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - "github.com/cosmos/ibc-go/v7/modules/core/types" - ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - wasm08 "github.com/cosmos/ibc-go/v7/modules/light-clients/08-wasm/keeper" - ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/cosmos/ibc-go/v7/testing/mock" - ibctestingtypes "github.com/cosmos/ibc-go/v7/testing/types" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + commitmenttypes "github.com/cosmos/ibc-go/v8/modules/core/23-commitment/types" + host "github.com/cosmos/ibc-go/v8/modules/core/24-host" + "github.com/cosmos/ibc-go/v8/modules/core/exported" + ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" + "github.com/cosmos/ibc-go/v8/modules/core/types" + ibctmtypes "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" + ibctesting "github.com/cosmos/ibc-go/v8/testing" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - composable "github.com/notional-labs/composable/v6/app" - "github.com/notional-labs/composable/v6/app/ibctesting/simapp" - routerKeeper "github.com/notional-labs/composable/v6/x/transfermiddleware/keeper" + cmtprotoversion "github.com/cometbft/cometbft/proto/tendermint/version" + "github.com/notional-labs/composable/v6/app" ) +var MaxAccounts = 10 + +type SenderAccount struct { + SenderPrivKey cryptotypes.PrivKey + SenderAccount sdk.AccountI +} + +// ChainApp Abstract chain app definition used for testing +type ChainApp interface { + servertypes.ABCI + AppCodec() codec.Codec + GetContextForFinalizeBlock(txBytes []byte) sdk.Context + NewContextLegacy(isCheckTx bool, header tmproto.Header) sdk.Context + NewUncachedContext(isCheckTx bool, header tmproto.Header) sdk.Context + LastBlockHeight() int64 + LastCommitID() storetypes.CommitID + GetBaseApp() *baseapp.BaseApp + + TxConfig() client.TxConfig + GetScopedIBCKeeper() capabilitykeeper.ScopedKeeper + GetIBCKeeper() *ibckeeper.Keeper + GetBankKeeper() bankkeeper.Keeper + GetStakingKeeper() *stakingkeeper.Keeper + GetGovKeeper() *govkeeper.Keeper + GetAccountKeeper() authkeeper.AccountKeeper + GetWasmKeeper() wasmkeeper.Keeper + GetWasm08Keeper() wasm08.Keeper + GetPfmKeeper() packetforwardkeeper.Keeper + GetRateLimitKeeper() ratelimitmodulekeeper.Keeper + GetTransferMiddlewareKeeper() transfermiddlewarekeeper.Keeper + GetTransferKeeper() customibctransferkeeper.Keeper +} + // TestChain is a testing struct that wraps a simapp with the last TM Header, the current ABCI // header and the validators of the TestChain. It also contains a field called ChainID. This // is the clientID that *other* chains use to refer to this TestChain. The SenderAccount @@ -68,7 +100,7 @@ type TestChain struct { t *testing.T Coordinator *Coordinator - App ibctesting.TestingApp + App ChainApp ChainID string LastHeader *ibctmtypes.Header // header for last block height committed CurrentHeader tmproto.Header // header for current block height @@ -76,15 +108,19 @@ type TestChain struct { TxConfig client.TxConfig Codec codec.BinaryCodec - Vals *tmtypes.ValidatorSet - Signers []tmtypes.PrivValidator + Vals *cmttypes.ValidatorSet + NextVals *cmttypes.ValidatorSet + Signers map[string]cmttypes.PrivValidator - senderPrivKey cryptotypes.PrivKey - SenderAccount authtypes.AccountI + SenderPrivKey cryptotypes.PrivKey + SenderAccount sdk.AccountI + SenderAccounts []SenderAccount PendingSendPackets []channeltypes.Packet PendingAckPackets []PacketAck + DefaultMsgFees sdk.Coins + // Use wasm client if true UseWasmClient bool } @@ -94,6 +130,9 @@ type PacketAck struct { Ack []byte } +// ChainAppFactory abstract factory method that usually implemented by app.SetupWithGenesisValSet +type ChainAppFactory func(t *testing.T, valSet *cmttypes.ValidatorSet, genAccs []authtypes.GenesisAccount, chainID string, balances ...banktypes.Balance) ChainApp + // NewTestChain initializes a new TestChain instance with a single validator set using a // generated private key. It also creates a sender account to be used for delivering transactions. // @@ -102,30 +141,59 @@ type PacketAck struct { // // Time management is handled by the Coordinator in order to ensure synchrony between chains. // Each update of any chain increments the block header time for all chains by 5 seconds. -func NewTestChain(t *testing.T, coord *Coordinator, chainID string) *TestChain { +func NewTestChain(t *testing.T, coord *Coordinator, appFactory ChainAppFactory, chainID string) *TestChain { t.Helper() - // generate validator private/public key - privVal := mock.NewPV() - pubKey, err := privVal.GetPubKey() - require.NoError(t, err) - - // create validator set with single validator - validator := tmtypes.NewValidator(pubKey, 1) - valSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{validator}) - signers := []tmtypes.PrivValidator{privVal} - - // generate genesis account - senderPrivKey := secp256k1.GenPrivKey() - acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), 0, 0) - amount, ok := sdk.NewIntFromString("10000000000000000000000") - require.True(t, ok) - - balance := banktypes.Balance{ - Address: acc.GetAddress().String(), - Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, amount)), + genAccs := []authtypes.GenesisAccount{} + genBals := []banktypes.Balance{} + senderAccs := []SenderAccount{} + + // generate validators private/public key + var ( + validatorsPerChain = 4 + validators []*cmttypes.Validator + signersByAddress = make(map[string]cmttypes.PrivValidator, validatorsPerChain) + ) + + for i := 0; i < validatorsPerChain; i++ { + _, privVal := cmttypes.RandValidator(false, 100) + pubKey, err := privVal.GetPubKey() + require.NoError(t, err) + validators = append(validators, cmttypes.NewValidator(pubKey, 1)) + signersByAddress[pubKey.Address().String()] = privVal } - app := NewTestingAppDecorator(t, composable.SetupWithGenesisValSet(t, coord.CurrentTime.UTC(), valSet, []authtypes.GenesisAccount{acc}, balance)) + // construct validator set; + // Note that the validators are sorted by voting power + // or, if equal, by address lexical order + valSet := cmttypes.NewValidatorSet(validators) + + // generate genesis accounts + for i := 0; i < MaxAccounts; i++ { + senderPrivKey := secp256k1.GenPrivKey() + acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), uint64(i), 0) + amount, ok := sdkmath.NewIntFromString("10000000000000000000") + require.True(t, ok) + + // add sender account + balance := banktypes.Balance{ + Address: acc.GetAddress().String(), + Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, amount)), + } + + genAccs = append(genAccs, acc) + genBals = append(genBals, balance) + + senderAcc := SenderAccount{ + SenderAccount: acc, + SenderPrivKey: senderPrivKey, + } + + senderAccs = append(senderAccs, senderAcc) + } + + app := appFactory(t, valSet, genAccs, chainID, genBals...) + + // app := NewTestingAppDecorator(t, app.SetupWithGenesisValSet(t, valSet, []authtypes.GenesisAccount{acc}, "", nil, balance)) // create current header and call begin block header := tmproto.Header{ @@ -134,21 +202,24 @@ func NewTestChain(t *testing.T, coord *Coordinator, chainID string) *TestChain { Time: coord.CurrentTime.UTC(), } - txConfig := app.GetTxConfig() + txConfig := app.TxConfig() // create an account to send transactions from chain := &TestChain{ - t: t, - Coordinator: coord, - ChainID: chainID, - App: app, - CurrentHeader: header, - QueryServer: app.GetIBCKeeper(), - TxConfig: txConfig, - Codec: app.AppCodec(), - Vals: valSet, - Signers: signers, - senderPrivKey: senderPrivKey, - SenderAccount: acc, + t: t, + Coordinator: coord, + ChainID: chainID, + App: app, + CurrentHeader: header, + QueryServer: app.GetIBCKeeper(), + TxConfig: txConfig, + Codec: app.AppCodec(), + Vals: valSet, + NextVals: valSet, + Signers: signersByAddress, + SenderPrivKey: senderAccs[0].SenderPrivKey, + SenderAccount: senderAccs[0].SenderAccount, + SenderAccounts: senderAccs, + DefaultMsgFees: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.ZeroInt())), } baseapp.SetChainID(chain.ChainID)(chain.App.GetBaseApp()) @@ -165,17 +236,7 @@ func (chain *TestChain) SetWasm(wasm bool) *TestChain { // GetContext returns the current context for the application. func (chain *TestChain) GetContext() sdk.Context { - return chain.App.GetBaseApp().NewContext(false, chain.CurrentHeader) -} - -// GetSimApp returns the SimApp to allow usage ofnon-interface fields. -// CONTRACT: This function should not be called by third parties implementing -// their own SimApp. -func (chain *TestChain) GetSimApp() *simapp.SimApp { - app, ok := chain.App.(*simapp.SimApp) - require.True(chain.t, ok) - - return app + return chain.App.GetBaseApp().NewUncachedContext(false, chain.CurrentHeader) } // QueryProof performs an abci query with the given key and returns the proto encoded merkle proof @@ -187,12 +248,19 @@ func (chain *TestChain) QueryProof(key []byte) ([]byte, clienttypes.Height) { // QueryProof performs an abci query with the given key and returns the proto encoded merkle proof // for the query and the height at which the proof will succeed on a tendermint verifier. func (chain *TestChain) QueryProofAtHeight(key []byte, height int64) ([]byte, clienttypes.Height) { - res := chain.App.Query(abci.RequestQuery{ - Path: fmt.Sprintf("store/%s/key", exported.StoreKey), + return chain.QueryProofForStore(exported.StoreKey, key, height) +} + +// QueryProofForStore performs an abci query with the given key and returns the proto encoded merkle proof +// for the query and the height at which the proof will succeed on a tendermint verifier. +func (chain *TestChain) QueryProofForStore(storeKey string, key []byte, height int64) ([]byte, clienttypes.Height) { + res, err := chain.App.Query(context.TODO(), &abci.RequestQuery{ + Path: fmt.Sprintf("store/%s/key", storeKey), Height: height - 1, Data: key, Prove: true, }) + require.NoError(chain.t, err) merkleProof, err := commitmenttypes.ConvertProofs(res.ProofOps) require.NoError(chain.t, err) @@ -211,12 +279,13 @@ func (chain *TestChain) QueryProofAtHeight(key []byte, height int64) ([]byte, cl // QueryUpgradeProof performs an abci query with the given key and returns the proto encoded merkle proof // for the query and the height at which the proof will succeed on a tendermint verifier. func (chain *TestChain) QueryUpgradeProof(key []byte, height uint64) ([]byte, clienttypes.Height) { - res := chain.App.Query(abci.RequestQuery{ + res, err := chain.App.Query(context.TODO(), &abci.RequestQuery{ Path: "store/upgrade/key", Height: int64(height - 1), Data: key, Prove: true, }) + require.NoError(chain.t, err) merkleProof, err := commitmenttypes.ConvertProofs(res.ProofOps) require.NoError(chain.t, err) @@ -249,9 +318,27 @@ func (chain *TestChain) QueryConsensusStateProof(clientID string) ([]byte, clien // // CONTRACT: this function must only be called after app.Commit() occurs func (chain *TestChain) NextBlock() { + res, err := chain.App.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: chain.CurrentHeader.Height, + Time: chain.CurrentHeader.GetTime(), // todo (Alex): is this the correct time + NextValidatorsHash: chain.NextVals.Hash(), + }) + require.NoError(chain.t, err) + chain.commitBlock(res) +} + +func (chain *TestChain) commitBlock(res *abci.ResponseFinalizeBlock) { + _, err := chain.App.Commit() + require.NoError(chain.t, err) + // set the last header to the current header // use nil trusted fields - chain.LastHeader = chain.CurrentTMClientHeader() + chain.LastHeader = chain.CurrentCmtClientHeader() + + // val set changes returned from previous block get applied to the next validators + // of this block. See tendermint spec for details. + chain.Vals = chain.NextVals + chain.NextVals = ibctesting.ApplyValSetChanges(chain.t, chain.Vals, res.ValidatorUpdates) // increment the current header chain.CurrentHeader = tmproto.Header{ @@ -262,10 +349,102 @@ func (chain *TestChain) NextBlock() { // chains. Time: chain.CurrentHeader.Time, ValidatorsHash: chain.Vals.Hash(), - NextValidatorsHash: chain.Vals.Hash(), + NextValidatorsHash: chain.NextVals.Hash(), + ProposerAddress: chain.CurrentHeader.ProposerAddress, } +} - chain.App.BeginBlock(abci.RequestBeginBlock{Header: chain.CurrentHeader}) +// CurrentCmtClientHeader creates a CMT header using the current header parameters +// on the chain. The trusted fields in the header are set to nil. +func (chain *TestChain) CurrentCmtClientHeader() *ibctmtypes.Header { + return chain.CreateCmtClientHeader( + chain.ChainID, + chain.CurrentHeader.Height, + clienttypes.Height{}, + chain.CurrentHeader.Time, + chain.Vals, + chain.NextVals, + nil, + chain.Signers, + ) +} + +// CreateCmtClientHeader creates a CMT header to update the CMT client. Args are passed in to allow +// caller flexibility to use params that differ from the chain. +func (chain *TestChain) CreateCmtClientHeader(chainID string, blockHeight int64, trustedHeight clienttypes.Height, timestamp time.Time, cmtValSet, nextVals, cmtTrustedVals *cmttypes.ValidatorSet, signers map[string]cmttypes.PrivValidator) *ibctmtypes.Header { + var ( + valSet *tmproto.ValidatorSet + trustedVals *tmproto.ValidatorSet + ) + require.NotNil(chain.t, cmtValSet) + + vsetHash := cmtValSet.Hash() + nextValHash := nextVals.Hash() + + cmtHeader := cmttypes.Header{ + Version: cmtprotoversion.Consensus{Block: tmversion.BlockProtocol, App: 2}, + ChainID: chainID, + Height: blockHeight, + Time: timestamp, + LastBlockID: MakeBlockID(make([]byte, tmhash.Size), 10_000, make([]byte, tmhash.Size)), + LastCommitHash: chain.App.LastCommitID().Hash, + DataHash: tmhash.Sum([]byte("data_hash")), + ValidatorsHash: vsetHash, + NextValidatorsHash: nextValHash, + ConsensusHash: tmhash.Sum([]byte("consensus_hash")), + AppHash: chain.CurrentHeader.AppHash, + LastResultsHash: tmhash.Sum([]byte("last_results_hash")), + EvidenceHash: tmhash.Sum([]byte("evidence_hash")), + ProposerAddress: cmtValSet.Proposer.Address, //nolint:staticcheck // SA5011: possible nil pointer dereference + } + + hhash := cmtHeader.Hash() + blockID := MakeBlockID(hhash, 3, tmhash.Sum([]byte("part_set"))) + voteSet := cmttypes.NewExtendedVoteSet(chainID, blockHeight, 1, tmproto.PrecommitType, cmtValSet) + // MakeCommit expects a signer array in the same order as the validator array. + // Thus we iterate over the ordered validator set and construct a signer array + // from the signer map in the same order. + signerArr := make([]cmttypes.PrivValidator, len(cmtValSet.Validators)) //nolint:staticcheck + for i, v := range cmtValSet.Validators { //nolint:staticcheck + signerArr[i] = signers[v.Address.String()] + } + extCommit, err := cmttypes.MakeExtCommit(blockID, blockHeight, 1, voteSet, signerArr, timestamp, true) + require.NoError(chain.t, err) + + signedHeader := &tmproto.SignedHeader{ + Header: cmtHeader.ToProto(), + Commit: extCommit.ToCommit().ToProto(), + } + + if cmtValSet != nil { //nolint:staticcheck + valSet, err = cmtValSet.ToProto() + require.NoError(chain.t, err) + } + + if cmtTrustedVals != nil { + trustedVals, err = cmtTrustedVals.ToProto() + require.NoError(chain.t, err) + } + + // The trusted fields may be nil. They may be filled before relaying messages to a client. + // The relayer is responsible for querying client and injecting appropriate trusted fields. + return &ibctmtypes.Header{ + SignedHeader: signedHeader, + ValidatorSet: valSet, + TrustedHeight: trustedHeight, + TrustedValidators: trustedVals, + } +} + +// MakeBlockID copied unimported test functions from cmttypes to use them here +func MakeBlockID(hash []byte, partSetSize uint32, partSetHash []byte) cmttypes.BlockID { + return cmttypes.BlockID{ + Hash: hash, + PartSetHeader: cmttypes.PartSetHeader{ + Total: partSetSize, + Hash: partSetHash, + }, + } } // sendMsgs delivers a transaction through the application without returning the result. @@ -277,56 +456,74 @@ func (chain *TestChain) sendMsgs(msgs ...sdk.Msg) error { // SendMsgs delivers a transaction through the application. It updates the senders sequence // number and updates the TestChain's headers. It returns the result and error if one // occurred. -func (chain *TestChain) SendMsgs(msgs ...sdk.Msg) (*sdk.Result, error) { +func (chain *TestChain) SendMsgs(msgs ...sdk.Msg) (*abci.ExecTxResult, error) { + rsp, gotErr := chain.sendWithSigner(chain.SenderPrivKey, chain.SenderAccount, msgs...) + + return rsp, gotErr +} + +// SendNonDefaultSenderMsgs is the same as SendMsgs but with a custom signer/account +func (chain *TestChain) SendNonDefaultSenderMsgs(senderPrivKey cryptotypes.PrivKey, msgs ...sdk.Msg) (*abci.ExecTxResult, error) { + require.NotEqual(chain.t, chain.SenderPrivKey, senderPrivKey, "use SendMsgs method") + + addr := sdk.AccAddress(senderPrivKey.PubKey().Address().Bytes()) + account := chain.App.GetAccountKeeper().GetAccount(chain.GetContext(), addr) + require.NotNil(chain.t, account) + return chain.sendWithSigner(senderPrivKey, account, msgs...) +} + +// sendWithSigner is a generic helper to send messages +func (chain *TestChain) sendWithSigner( + senderPrivKey cryptotypes.PrivKey, + senderAccount sdk.AccountI, + msgs ...sdk.Msg, +) (*abci.ExecTxResult, error) { // ensure the chain has the latest time chain.Coordinator.UpdateTimeForChain(chain) - _, r, err := composable.SignAndDeliver( + // increment acc sequence regardless of success or failure tx execution + defer func() { + err := chain.SenderAccount.SetSequence(chain.SenderAccount.GetSequence() + 1) + if err != nil { + panic(err) + } + }() + + blockResp, gotErr := app.SignAndDeliver( chain.t, chain.TxConfig, chain.App.GetBaseApp(), - chain.GetContext().BlockHeader(), msgs, chain.ChainID, - []uint64{chain.SenderAccount.GetAccountNumber()}, - []uint64{chain.SenderAccount.GetSequence()}, - true, true, chain.senderPrivKey, + []uint64{senderAccount.GetAccountNumber()}, + []uint64{senderAccount.GetSequence()}, + true, + chain.CurrentHeader.GetTime(), + chain.NextVals.Hash(), + senderPrivKey, ) - if err != nil { - return nil, err + if gotErr != nil { + return nil, gotErr } + chain.commitBlock(blockResp) - // SignAndDeliver calls app.Commit() - chain.NextBlock() + require.Len(chain.t, blockResp.TxResults, 1) + txResult := blockResp.TxResults[0] - // increment sequence for successful transaction execution - err = chain.SenderAccount.SetSequence(chain.SenderAccount.GetSequence() + 1) - if err != nil { - return nil, err + if txResult.Code != 0 { + return txResult, fmt.Errorf("%s/%d: %q", txResult.Codespace, txResult.Code, txResult.Log) } chain.Coordinator.IncrementTime() - - chain.captureIBCEvents(r) - - return r, nil + chain.CaptureIBCEvents(txResult) + return txResult, nil } -func (chain *TestChain) SendMsgsWithExpPass(expPass bool, msgs ...sdk.Msg) (*sdk.Result, error) { +func (chain *TestChain) SendMsgsWithExpPass(expPass bool, msgs ...sdk.Msg) (*abci.ExecTxResult, error) { // ensure the chain has the latest time chain.Coordinator.UpdateTimeForChain(chain) - _, r, err := composable.SignAndDeliver( - chain.t, - chain.TxConfig, - chain.App.GetBaseApp(), - chain.GetContext().BlockHeader(), - msgs, - chain.ChainID, - []uint64{chain.SenderAccount.GetAccountNumber()}, - []uint64{chain.SenderAccount.GetSequence()}, - true, expPass, chain.senderPrivKey, - ) + blockResp, err := app.SignAndDeliverWithoutCommit(chain.t, chain.TxConfig, chain.App.GetBaseApp(), msgs, chain.ChainID, []uint64{chain.SenderAccount.GetAccountNumber()}, []uint64{chain.SenderAccount.GetSequence()}, chain.CurrentHeader.GetTime(), chain.SenderPrivKey) if err != nil { return nil, err } @@ -342,13 +539,17 @@ func (chain *TestChain) SendMsgsWithExpPass(expPass bool, msgs ...sdk.Msg) (*sdk chain.Coordinator.IncrementTime() - chain.captureIBCEvents(r) + txResult := blockResp.TxResults[0] + if txResult.Code != 0 { + return txResult, fmt.Errorf("%s/%d: %q", txResult.Codespace, txResult.Code, txResult.Log) + } + chain.CaptureIBCEvents(txResult) - return r, nil + return txResult, nil } -func (chain *TestChain) captureIBCEvents(r *sdk.Result) { - toSend := getSendPackets(r.Events) +func (chain *TestChain) CaptureIBCEvents(r *abci.ExecTxResult) { + toSend := GetSendPackets(r.Events) if len(toSend) > 0 { // Keep a queue on the chain that we can relay in tests chain.PendingSendPackets = append(chain.PendingSendPackets, toSend...) @@ -377,19 +578,28 @@ func (chain *TestChain) GetConsensusState(clientID string, height exported.Heigh // GetValsAtHeight will return the validator set of the chain at a given height. It will return // a success boolean depending on if the validator set exists or not at that height. -func (chain *TestChain) GetValsAtHeight(height int64) (*tmtypes.ValidatorSet, bool) { - histInfo, ok := chain.App.GetStakingKeeper().GetHistoricalInfo(chain.GetContext(), height) - if !ok { +func (chain *TestChain) GetValsAtHeight(height int64) (*cmttypes.ValidatorSet, bool) { + // if the current uncommitted header equals the requested height, then we can return + // the current validator set as this validator set will be stored in the historical info + // when the block height is executed + if height == chain.CurrentHeader.Height { + return chain.Vals, true + } + + histInfo, err := chain.App.GetStakingKeeper().GetHistoricalInfo(chain.GetContext(), height) + if err != nil { return nil, false } - valSet := stakingtypes.Validators(histInfo.Valset) + valSet := stakingtypes.Validators{ + Validators: histInfo.Valset, + } - tmValidators, err := teststaking.ToTmValidators(valSet, sdk.DefaultPowerReduction) + cmtValidators, err := testutil.ToCmtValidators(valSet, sdk.DefaultPowerReduction) if err != nil { panic(err) } - return tmtypes.NewValidatorSet(tmValidators), true + return cmttypes.NewValidatorSet(cmtValidators), true } // GetAcknowledgement retrieves an acknowledgement for the provided packet. If the @@ -421,7 +631,7 @@ func (chain *TestChain) ConstructUpdateTMClientHeaderWithTrustedHeight(counterpa trustedHeight = chain.GetClientState(clientID).GetLatestHeight().(clienttypes.Height) } var ( - tmTrustedVals *tmtypes.ValidatorSet + tmTrustedVals *cmttypes.ValidatorSet ok bool ) // Once we get TrustedHeight from client, we must query the validators from the counterparty chain @@ -458,104 +668,6 @@ func (chain *TestChain) ExpireClient(amount time.Duration) { chain.Coordinator.IncrementTimeBy(amount) } -// CurrentTMClientHeader creates a TM header using the current header parameters -// on the chain. The trusted fields in the header are set to nil. -func (chain *TestChain) CurrentTMClientHeader() *ibctmtypes.Header { - return chain.CreateTMClientHeader(chain.ChainID, chain.CurrentHeader.Height, clienttypes.Height{}, chain.CurrentHeader.Time, chain.Vals, nil, chain.Signers) -} - -// CreateTMClientHeader creates a TM header to update the TM client. Args are passed in to allow -// caller flexibility to use params that differ from the chain. -func (chain *TestChain) CreateTMClientHeader(chainID string, blockHeight int64, trustedHeight clienttypes.Height, timestamp time.Time, tmValSet, tmTrustedVals *tmtypes.ValidatorSet, signers []tmtypes.PrivValidator) *ibctmtypes.Header { - var ( - valSet *tmproto.ValidatorSet - trustedVals *tmproto.ValidatorSet - ) - require.NotNil(chain.t, tmValSet) - - vsetHash := tmValSet.Hash() - - tmHeader := tmtypes.Header{ - Version: tmprotoversion.Consensus{Block: tmversion.BlockProtocol, App: 2}, - ChainID: chainID, - Height: blockHeight, - Time: timestamp, - LastBlockID: MakeBlockID(make([]byte, tmhash.Size), 10_000, make([]byte, tmhash.Size)), - LastCommitHash: chain.App.LastCommitID().Hash, - DataHash: tmhash.Sum([]byte("data_hash")), - ValidatorsHash: vsetHash, - NextValidatorsHash: vsetHash, - ConsensusHash: tmhash.Sum([]byte("consensus_hash")), - AppHash: chain.CurrentHeader.AppHash, - LastResultsHash: tmhash.Sum([]byte("last_results_hash")), - EvidenceHash: tmhash.Sum([]byte("evidence_hash")), - ProposerAddress: tmValSet.Proposer.Address, - } - hhash := tmHeader.Hash() - blockID := MakeBlockID(hhash, 3, tmhash.Sum([]byte("part_set"))) - voteSet := tmtypes.NewVoteSet(chainID, blockHeight, 1, tmproto.PrecommitType, tmValSet) - - commit, err := tmtypes.MakeCommit(blockID, blockHeight, 1, voteSet, signers, timestamp) - require.NoError(chain.t, err) - - signedHeader := &tmproto.SignedHeader{ - Header: tmHeader.ToProto(), - Commit: commit.ToProto(), - } - - valSet, err = tmValSet.ToProto() - if err != nil { - panic(err) - } - - if tmTrustedVals != nil { - trustedVals, err = tmTrustedVals.ToProto() - if err != nil { - panic(err) - } - } - - // The trusted fields may be nil. They may be filled before relaying messages to a client. - // The relayer is responsible for querying client and injecting appropriate trusted fields. - return &ibctmtypes.Header{ - SignedHeader: signedHeader, - ValidatorSet: valSet, - TrustedHeight: trustedHeight, - TrustedValidators: trustedVals, - } -} - -// MakeBlockID copied unimported test functions from tmtypes to use them here -func MakeBlockID(hash []byte, partSetSize uint32, partSetHash []byte) tmtypes.BlockID { - return tmtypes.BlockID{ - Hash: hash, - PartSetHeader: tmtypes.PartSetHeader{ - Total: partSetSize, - Hash: partSetHash, - }, - } -} - -// CreateSortedSignerArray takes two PrivValidators, and the corresponding Validator structs -// (including voting power). It returns a signer array of PrivValidators that matches the -// sorting of ValidatorSet. -// The sorting is first by .VotingPower (descending), with secondary index of .Address (ascending). -func CreateSortedSignerArray(altPrivVal, suitePrivVal tmtypes.PrivValidator, - altVal, suiteVal *tmtypes.Validator, -) []tmtypes.PrivValidator { - switch { - case altVal.VotingPower > suiteVal.VotingPower: - return []tmtypes.PrivValidator{altPrivVal, suitePrivVal} - case altVal.VotingPower < suiteVal.VotingPower: - return []tmtypes.PrivValidator{suitePrivVal, altPrivVal} - default: - if bytes.Compare(altVal.Address, suiteVal.Address) == -1 { - return []tmtypes.PrivValidator{altPrivVal, suitePrivVal} - } - return []tmtypes.PrivValidator{suitePrivVal, altPrivVal} - } -} - // CreatePortCapability binds and claims a capability for the given portID if it does not // already exist. This function will fail testing on any resulting error. // NOTE: only creation of a capbility for a transfer or mock port is supported @@ -615,149 +727,66 @@ func (chain *TestChain) GetChannelCapability(portID, channelID string) *capabili return capability } -func (chain *TestChain) TransferMiddleware() routerKeeper.Keeper { - return chain.GetTestSupport().TransferMiddleware() +func (chain *TestChain) TransferMiddleware() transfermiddlewarekeeper.Keeper { + return chain.App.GetTransferMiddlewareKeeper() } func (chain *TestChain) RateLimit() ratelimitmodulekeeper.Keeper { - return chain.GetTestSupport().RateLimit() + return chain.App.GetRateLimitKeeper() +} + +func (chain *TestChain) TransferKeeper() customibctransferkeeper.Keeper { + return chain.App.GetTransferKeeper() } func (chain *TestChain) Balance(acc sdk.AccAddress, denom string) sdk.Coin { - return chain.GetTestSupport().BankKeeper().GetBalance(chain.GetContext(), acc, denom) + return chain.App.GetBankKeeper().GetBalance(chain.GetContext(), acc, denom) } func (chain *TestChain) AllBalances(acc sdk.AccAddress) sdk.Coins { - return chain.GetTestSupport().BankKeeper().GetAllBalances(chain.GetContext(), acc) + return chain.App.GetBankKeeper().GetAllBalances(chain.GetContext(), acc) } func (chain *TestChain) GetBankKeeper() bankkeeper.Keeper { - return chain.GetTestSupport().BankKeeper() + return chain.App.GetBankKeeper() } -func (chain TestChain) GetTestSupport() *composable.TestSupport { - return chain.App.(*TestingAppDecorator).TestSupport() +func (chain TestChain) Wasm08Keeper() wasm08.Keeper { + return chain.App.GetWasm08Keeper() } func (chain *TestChain) QueryContract(suite *suite.Suite, contract sdk.AccAddress, key []byte) string { - wasmKeeper := chain.GetTestSupport().WasmdKeeper() + wasmKeeper := chain.App.GetWasmKeeper() state, err := wasmKeeper.QuerySmart(chain.GetContext(), contract, key) suite.Require().NoError(err) return string(state) } -func (chain *TestChain) StoreContractCode(suite *suite.Suite, path string) { - govModuleAddress := chain.GetTestSupport().AccountKeeper().GetModuleAddress(govtypes.ModuleName) - wasmCode, err := os.ReadFile(path) - suite.Require().NoError(err) - - src := wasmtypes.StoreCodeProposalFixture(func(p *wasmtypes.StoreCodeProposal) { //nolint: staticcheck - p.RunAs = govModuleAddress.String() - p.WASMByteCode = wasmCode - checksum := sha256.Sum256(wasmCode) - p.CodeHash = checksum[:] - }) - - govKeeper := chain.GetTestSupport().GovKeeper() - // when - mustSubmitAndExecuteLegacyProposal(suite.T(), chain.GetContext(), src, chain.SenderAccount.GetAddress().String(), &govKeeper, govModuleAddress.String()) - suite.Require().NoError(err) -} +// +// func (chain *TestChain) StoreContractCode(suite *suite.Suite, path string) { +// govModuleAddress := chain.App.GetAccountKeeper().GetModuleAddress(govtypes.ModuleName) +// wasmCode, err := os.ReadFile(path) +// suite.Require().NoError(err) +// +// src := wasmtypes.New(func(p *wasmtypes.StoreCodeProposal) { //nolint: staticcheck +// p.RunAs = govModuleAddress.String() +// p.WASMByteCode = wasmCode +// checksum := sha256.Sum256(wasmCode) +// p.CodeHash = checksum[:] +// }) +// +// govKeeper := chain.App.GetGovKeeper() +// // when +// mustSubmitAndExecuteLegacyProposal(suite.T(), chain.GetContext(), src, chain.SenderAccount.GetAddress().String(), govKeeper, govModuleAddress.String()) +// suite.Require().NoError(err) +//} func (chain *TestChain) InstantiateContract(suite *suite.Suite, msg string, codeID uint64) sdk.AccAddress { - wasmKeeper := chain.GetTestSupport().WasmdKeeper() - govModuleAddress := chain.GetTestSupport().AccountKeeper().GetModuleAddress(govtypes.ModuleName) + wasmKeeper := chain.App.GetWasmKeeper() + govModuleAddress := chain.App.GetAccountKeeper().GetModuleAddress(govtypes.ModuleName) contractKeeper := wasmkeeper.NewDefaultPermissionKeeper(wasmKeeper) addr, _, err := contractKeeper.Instantiate(chain.GetContext(), codeID, govModuleAddress, govModuleAddress, []byte(msg), "contract", nil) suite.Require().NoError(err) return addr } - -func mustSubmitAndExecuteLegacyProposal(t *testing.T, ctx sdk.Context, content v1beta1.Content, myActorAddress string, govKeeper *govkeeper.Keeper, authority string) { - t.Helper() - msgServer := govkeeper.NewMsgServerImpl(govKeeper) - // ignore all submit events - contentMsg, err := submitLegacyProposal(t, ctx.WithEventManager(sdk.NewEventManager()), content, myActorAddress, authority, msgServer) - require.NoError(t, err) - - _, err = msgServer.ExecLegacyContent(sdk.WrapSDKContext(ctx), v1.NewMsgExecLegacyContent(contentMsg.Content, authority)) - require.NoError(t, err) -} - -// does not fail on submit proposal -func submitLegacyProposal(t *testing.T, ctx sdk.Context, content v1beta1.Content, myActorAddress, govAuthority string, msgServer v1.MsgServer) (*v1.MsgExecLegacyContent, error) { - t.Helper() - contentMsg, err := v1.NewLegacyContent(content, govAuthority) - require.NoError(t, err) - - proposal, err := v1.NewMsgSubmitProposal( - []sdk.Msg{contentMsg}, - sdk.Coins{}, - myActorAddress, - "", - "my title", - "my description", - ) - require.NoError(t, err) - - // when stored - _, err = msgServer.SubmitProposal(sdk.WrapSDKContext(ctx), proposal) - return contentMsg, err -} - -var _ ibctesting.TestingApp = TestingAppDecorator{} - -type TestingAppDecorator struct { - *composable.ComposableApp - t *testing.T -} - -func NewTestingAppDecorator(t *testing.T, composable *composable.ComposableApp) *TestingAppDecorator { - t.Helper() - return &TestingAppDecorator{ComposableApp: composable, t: t} -} - -func (a TestingAppDecorator) GetBaseApp() *baseapp.BaseApp { - return a.TestSupport().GetBaseApp() -} - -func (a TestingAppDecorator) GetStakingKeeper() ibctestingtypes.StakingKeeper { - return a.TestSupport().StakingKeeper() -} - -func (a TestingAppDecorator) GetAccountKeeper() authkeeper.AccountKeeper { - return a.TestSupport().AccountKeeper() -} - -func (a TestingAppDecorator) GetGovKeeper() govkeeper.Keeper { - return a.TestSupport().GovKeeper() -} - -func (a TestingAppDecorator) GetBankKeeper() bankkeeper.Keeper { - return a.TestSupport().BankKeeper() -} - -func (a TestingAppDecorator) GetIBCKeeper() *ibckeeper.Keeper { - return a.TestSupport().IBCKeeper() -} - -func (a TestingAppDecorator) GetScopedIBCKeeper() capabilitykeeper.ScopedKeeper { - return a.TestSupport().ScopeIBCKeeper() -} - -func (a TestingAppDecorator) GetTxConfig() client.TxConfig { - return a.TestSupport().GetTxConfig() -} - -func (a TestingAppDecorator) TestSupport() *composable.TestSupport { - return composable.NewTestSupport(a.t, a.ComposableApp) -} - -func (a TestingAppDecorator) GetWasmdKeeper() wasm.Keeper { - return a.TestSupport().WasmdKeeper() -} - -func (a TestingAppDecorator) GetWasmKeeper() wasm08.Keeper { - return a.TestSupport().Wasm08Keeper() -} diff --git a/app/ibctesting/chain_test.go b/app/ibctesting/chain_test.go new file mode 100644 index 000000000..6716cc885 --- /dev/null +++ b/app/ibctesting/chain_test.go @@ -0,0 +1,54 @@ +package ibctesting_test + +import ( + "testing" + + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + "github.com/notional-labs/composable/v6/app/ibctesting" + + "github.com/stretchr/testify/require" + + sdkmath "cosmossdk.io/math" + + "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +func NewTransferPath(chainA, chainB *ibctesting.TestChain) *ibctesting.Path { + path := ibctesting.NewPath(chainA, chainB) + path.EndpointA.ChannelConfig.PortID = ibctesting.TransferPort + path.EndpointB.ChannelConfig.PortID = ibctesting.TransferPort + path.EndpointA.ChannelConfig.Version = transfertypes.Version + path.EndpointB.ChannelConfig.Version = transfertypes.Version + + return path +} + +func TestChangeValSet(t *testing.T) { + coord := ibctesting.NewCoordinator(t, 2) + chainA := coord.GetChain(ibctesting.GetChainID(1)) + chainB := coord.GetChain(ibctesting.GetChainID(2)) + + path := NewTransferPath(chainA, chainB) + coord.Setup(path) + + amount, ok := sdkmath.NewIntFromString("10000000000000000000") + require.True(t, ok) + amount2, ok := sdkmath.NewIntFromString("30000000000000000000") + require.True(t, ok) + + val, err := chainA.App.GetStakingKeeper().GetValidators(chainA.GetContext(), 4) + require.NoError(t, err) + + chainA.App.GetStakingKeeper().Delegate(chainA.GetContext(), chainA.SenderAccounts[1].SenderAccount.GetAddress(), //nolint:errcheck // ignore error for test + amount, types.Unbonded, val[1], true) + chainA.App.GetStakingKeeper().Delegate(chainA.GetContext(), chainA.SenderAccounts[3].SenderAccount.GetAddress(), //nolint:errcheck // ignore error for test + amount2, types.Unbonded, val[3], true) + + coord.CommitBlock(chainA) + + // verify that update clients works even after validator update goes into effect + err = path.EndpointB.UpdateClient() + require.NoError(t, err) + err = path.EndpointB.UpdateClient() + require.Error(t, err) +} diff --git a/app/ibctesting/config.go b/app/ibctesting/config.go index 4967160ca..4c1cba800 100644 --- a/app/ibctesting/config.go +++ b/app/ibctesting/config.go @@ -3,11 +3,11 @@ package ibctesting import ( "time" - connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/cosmos/ibc-go/v7/modules/core/exported" - ibctm "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - "github.com/cosmos/ibc-go/v7/testing/mock" + connectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + "github.com/cosmos/ibc-go/v8/modules/core/exported" + ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" + "github.com/cosmos/ibc-go/v8/testing/mock" ) type ClientConfig interface { @@ -19,23 +19,18 @@ type TendermintConfig struct { TrustingPeriod time.Duration UnbondingPeriod time.Duration MaxClockDrift time.Duration - IsWasmClient bool } -func NewTendermintConfig(isWasmClient bool) *TendermintConfig { +func NewTendermintConfig() *TendermintConfig { return &TendermintConfig{ TrustLevel: DefaultTrustLevel, TrustingPeriod: TrustingPeriod, UnbondingPeriod: UnbondingPeriod, MaxClockDrift: MaxClockDrift, - IsWasmClient: isWasmClient, } } -func (tmcfg *TendermintConfig) GetClientType() string { - if tmcfg.IsWasmClient { - return exported.Wasm - } +func (*TendermintConfig) GetClientType() string { return exported.Tendermint } @@ -52,9 +47,10 @@ func NewConnectionConfig() *ConnectionConfig { } type ChannelConfig struct { - PortID string - Version string - Order channeltypes.Order + PortID string + Version string + Order channeltypes.Order + ProposedUpgrade channeltypes.Upgrade } func NewChannelConfig() *ChannelConfig { diff --git a/app/ibctesting/coordinator.go b/app/ibctesting/coordinator.go index 4e6bebb29..fc91cad95 100644 --- a/app/ibctesting/coordinator.go +++ b/app/ibctesting/coordinator.go @@ -6,10 +6,9 @@ import ( "testing" "time" - abci "github.com/cometbft/cometbft/abci/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - host "github.com/cosmos/ibc-go/v7/modules/core/24-host" - ibctesting "github.com/cosmos/ibc-go/v7/testing" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + host "github.com/cosmos/ibc-go/v8/modules/core/24-host" + ibctesting "github.com/cosmos/ibc-go/v8/testing" "github.com/stretchr/testify/require" ) @@ -39,9 +38,9 @@ func NewCoordinator(t *testing.T, n int) *Coordinator { CurrentTime: globalStartTime, } - for i := 0; i < n; i++ { + for i := 1; i <= n; i++ { chainID := GetChainID(i) - chains[chainID] = NewTestChain(t, coord, chainID) + chains[chainID] = NewTestChain(t, coord, DefaultComposableAppFactory, chainID) } coord.Chains = chains @@ -73,7 +72,6 @@ func (coord *Coordinator) UpdateTime() { // UpdateTimeForChain updates the clock for a specific chain. func (coord *Coordinator) UpdateTimeForChain(chain *TestChain) { chain.CurrentHeader.Time = coord.CurrentTime.UTC() - chain.App.BeginBlock(abci.RequestBeginBlock{Header: chain.CurrentHeader}) } // Setup constructs a TM client, connection, and channel on both chains provided. It will @@ -187,7 +185,6 @@ func GetChainID(index int) string { // CONTRACT: the passed in list of indexes must not contain duplicates func (coord *Coordinator) CommitBlock(chains ...*TestChain) { for _, chain := range chains { - chain.App.Commit() chain.NextBlock() } coord.IncrementTime() @@ -196,8 +193,6 @@ func (coord *Coordinator) CommitBlock(chains ...*TestChain) { // CommitNBlocks commits n blocks to state and updates the block height by 1 for each commit. func (coord *Coordinator) CommitNBlocks(chain *TestChain, n uint64) { for i := uint64(0); i < n; i++ { - chain.App.BeginBlock(abci.RequestBeginBlock{Header: chain.CurrentHeader}) - chain.App.Commit() chain.NextBlock() coord.IncrementTime() } diff --git a/app/ibctesting/endpoint.go b/app/ibctesting/endpoint.go index 633dc7b2a..54a20bd04 100644 --- a/app/ibctesting/endpoint.go +++ b/app/ibctesting/endpoint.go @@ -2,18 +2,20 @@ package ibctesting import ( "fmt" - + "strings" + + abci "github.com/cometbft/cometbft/abci/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + connectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + commitmenttypes "github.com/cosmos/ibc-go/v8/modules/core/23-commitment/types" + host "github.com/cosmos/ibc-go/v8/modules/core/24-host" + "github.com/cosmos/ibc-go/v8/modules/core/exported" + ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" + ibctesting "github.com/cosmos/ibc-go/v8/testing" "github.com/stretchr/testify/require" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - commitmenttypes "github.com/cosmos/ibc-go/v7/modules/core/23-commitment/types" - host "github.com/cosmos/ibc-go/v7/modules/core/24-host" - "github.com/cosmos/ibc-go/v7/modules/core/exported" - ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - wasmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/08-wasm/types" - ibctesting "github.com/cosmos/ibc-go/v7/testing" + "github.com/cosmos/cosmos-sdk/baseapp" ) // Endpoint is a which represents a channel endpoint and its associated @@ -32,6 +34,31 @@ type Endpoint struct { ChannelConfig *ibctesting.ChannelConfig } +// NewEndpoint constructs a new endpoint without the counterparty. +// CONTRACT: the counterparty endpoint must be set by the caller. +func NewEndpoint( + chain *TestChain, clientConfig ibctesting.ClientConfig, + connectionConfig *ibctesting.ConnectionConfig, channelConfig *ibctesting.ChannelConfig, +) *Endpoint { + return &Endpoint{ + Chain: chain, + ClientConfig: clientConfig, + ConnectionConfig: connectionConfig, + ChannelConfig: channelConfig, + } +} + +// NewDefaultEndpoint constructs a new endpoint using default values. +// CONTRACT: the counterparty endpoitn must be set by the caller. +func NewDefaultEndpoint(chain *TestChain) *Endpoint { + return &Endpoint{ + Chain: chain, + ClientConfig: ibctesting.NewTendermintConfig(), + ConnectionConfig: ibctesting.NewConnectionConfig(), + ChannelConfig: ibctesting.NewChannelConfig(), + } +} + // QueryProof queries proof associated with this endpoint using the lastest client state // height on the counterparty chain. func (endpoint *Endpoint) QueryProof(key []byte) ([]byte, clienttypes.Height) { @@ -43,7 +70,7 @@ func (endpoint *Endpoint) QueryProof(key []byte) ([]byte, clienttypes.Height) { } // QueryProofAtHeight queries proof associated with this endpoint using the proof height -// providied +// provided func (endpoint *Endpoint) QueryProofAtHeight(key []byte, height uint64) ([]byte, clienttypes.Height) { // query proof on the counterparty using the latest height of the IBC client return endpoint.Chain.QueryProofAtHeight(key, int64(height)) @@ -67,39 +94,16 @@ func (endpoint *Endpoint) CreateClient() (err error) { require.True(endpoint.Chain.t, ok) height := endpoint.Counterparty.Chain.LastHeader.GetHeight().(clienttypes.Height) - clientState = ibctmtypes.NewClientState( + clientState = ibctm.NewClientState( endpoint.Counterparty.Chain.ChainID, tmConfig.TrustLevel, tmConfig.TrustingPeriod, tmConfig.UnbondingPeriod, tmConfig.MaxClockDrift, - height, commitmenttypes.GetSDKSpecs(), ibctesting.UpgradePath, - ) + height, commitmenttypes.GetSDKSpecs(), ibctesting.UpgradePath) consensusState = endpoint.Counterparty.Chain.LastHeader.ConsensusState() case exported.Solomachine: // TODO // solo := NewSolomachine(chain.t, endpoint.Chain.Codec, clientID, "", 1) // clientState = solo.ClientState() // consensusState = solo.ConsensusState() - case exported.Wasm: - tmConfig, ok := endpoint.ClientConfig.(*ibctesting.TendermintConfig) - require.True(endpoint.Chain.t, ok) - height := endpoint.Counterparty.Chain.LastHeader.GetHeight().(clienttypes.Height) - tmClientState := ibctmtypes.NewClientState( - endpoint.Counterparty.Chain.ChainID, tmConfig.TrustLevel, tmConfig.TrustingPeriod, tmConfig.UnbondingPeriod, tmConfig.MaxClockDrift, - height, commitmenttypes.GetSDKSpecs(), UpgradePath) - tmConsensusState := endpoint.Counterparty.Chain.LastHeader.ConsensusState() - wasmClientState, err := endpoint.Chain.Codec.MarshalInterface(tmClientState) - if err != nil { - return err - } - clientState = wasmtypes.NewClientState(wasmClientState, endpoint.Chain.Coordinator.CodeID, height) - - wasmConsensusState, err := endpoint.Chain.Codec.MarshalInterface(tmConsensusState) - if err != nil { - return err - } - consensusState = &wasmtypes.ConsensusState{ - Data: wasmConsensusState, - Timestamp: tmConsensusState.GetTimestamp(), - } default: err = fmt.Errorf("client type %s is not supported", endpoint.ClientConfig.GetClientType()) } @@ -118,7 +122,7 @@ func (endpoint *Endpoint) CreateClient() (err error) { return err } - endpoint.ClientID, err = ibctesting.ParseClientIDFromEvents(res.GetEvents()) + endpoint.ClientID, err = ParseClientIDFromEvents(res.GetEvents()) require.NoError(endpoint.Chain.t, err) return nil @@ -134,8 +138,7 @@ func (endpoint *Endpoint) UpdateClient() (err error) { switch endpoint.ClientConfig.GetClientType() { case exported.Tendermint: header, err = endpoint.Chain.ConstructUpdateTMClientHeader(endpoint.Counterparty.Chain, endpoint.ClientID) - case exported.Wasm: - header, err = endpoint.Chain.ConstructUpdateWasmClientHeader(endpoint.Counterparty.Chain, endpoint.ClientID) + default: err = fmt.Errorf("client type %s is not supported", endpoint.ClientConfig.GetClientType()) } @@ -153,6 +156,56 @@ func (endpoint *Endpoint) UpdateClient() (err error) { return endpoint.Chain.sendMsgs(msg) } +// UpgradeChain will upgrade a chain's chainID to the next revision number. +// It will also update the counterparty client. +// TODO: implement actual upgrade chain functionality via scheduling an upgrade +// and upgrading the client via MsgUpgradeClient +// see reference https://github.com/cosmos/ibc-go/pull/1169 +func (endpoint *Endpoint) UpgradeChain() error { + if strings.TrimSpace(endpoint.Counterparty.ClientID) == "" { + return fmt.Errorf("cannot upgrade chain if there is no counterparty client") + } + + clientState := endpoint.Counterparty.GetClientState().(*ibctm.ClientState) + + // increment revision number in chainID + + oldChainID := clientState.ChainId + if !clienttypes.IsRevisionFormat(oldChainID) { + return fmt.Errorf("cannot upgrade chain which is not of revision format: %s", oldChainID) + } + + revisionNumber := clienttypes.ParseChainID(oldChainID) + newChainID, err := clienttypes.SetRevisionNumber(oldChainID, revisionNumber+1) + if err != nil { + return err + } + + // update chain + baseapp.SetChainID(newChainID)(endpoint.Chain.App.GetBaseApp()) + endpoint.Chain.ChainID = newChainID + endpoint.Chain.CurrentHeader.ChainID = newChainID + endpoint.Chain.Coordinator.CommitBlock(endpoint.Chain) + + // update counterparty client manually + clientState.ChainId = newChainID + clientState.LatestHeight = clienttypes.NewHeight(revisionNumber+1, clientState.LatestHeight.GetRevisionHeight()+1) + endpoint.Counterparty.SetClientState(clientState) + + consensusState := &ibctm.ConsensusState{ + Timestamp: endpoint.Chain.LastHeader.GetTime(), + Root: commitmenttypes.NewMerkleRoot(endpoint.Chain.LastHeader.Header.GetAppHash()), + NextValidatorsHash: endpoint.Chain.LastHeader.Header.NextValidatorsHash, + } + endpoint.Counterparty.SetConsensusState(consensusState, clientState.GetLatestHeight()) + + // ensure the next update isn't identical to the one set in state + endpoint.Chain.Coordinator.IncrementTime() + endpoint.Chain.Coordinator.CommitBlock(endpoint.Chain) + + return endpoint.Counterparty.UpdateClient() +} + // ConnOpenInit will construct and execute a MsgConnectionOpenInit on the associated endpoint. func (endpoint *Endpoint) ConnOpenInit() error { msg := connectiontypes.NewMsgConnectionOpenInit( @@ -166,7 +219,7 @@ func (endpoint *Endpoint) ConnOpenInit() error { return err } - endpoint.ConnectionID, err = ibctesting.ParseConnectionIDFromEvents(res.GetEvents()) + endpoint.ConnectionID, err = ParseConnectionIDFromEvents(res.GetEvents()) require.NoError(endpoint.Chain.t, err) return nil @@ -174,9 +227,8 @@ func (endpoint *Endpoint) ConnOpenInit() error { // ConnOpenTry will construct and execute a MsgConnectionOpenTry on the associated endpoint. func (endpoint *Endpoint) ConnOpenTry() error { - if err := endpoint.UpdateClient(); err != nil { - return err - } + err := endpoint.UpdateClient() + require.NoError(endpoint.Chain.t, err) counterpartyClient, proofClient, proofConsensus, consensusHeight, proofInit, proofHeight := endpoint.QueryConnectionHandshakeProof() @@ -193,7 +245,7 @@ func (endpoint *Endpoint) ConnOpenTry() error { } if endpoint.ConnectionID == "" { - endpoint.ConnectionID, err = ibctesting.ParseConnectionIDFromEvents(res.GetEvents()) + endpoint.ConnectionID, err = ParseConnectionIDFromEvents(res.GetEvents()) require.NoError(endpoint.Chain.t, err) } @@ -202,9 +254,8 @@ func (endpoint *Endpoint) ConnOpenTry() error { // ConnOpenAck will construct and execute a MsgConnectionOpenAck on the associated endpoint. func (endpoint *Endpoint) ConnOpenAck() error { - if err := endpoint.UpdateClient(); err != nil { - return err - } + err := endpoint.UpdateClient() + require.NoError(endpoint.Chain.t, err) counterpartyClient, proofClient, proofConsensus, consensusHeight, proofTry, proofHeight := endpoint.QueryConnectionHandshakeProof() @@ -220,9 +271,8 @@ func (endpoint *Endpoint) ConnOpenAck() error { // ConnOpenConfirm will construct and execute a MsgConnectionOpenConfirm on the associated endpoint. func (endpoint *Endpoint) ConnOpenConfirm() error { - if err := endpoint.UpdateClient(); err != nil { - return err - } + err := endpoint.UpdateClient() + require.NoError(endpoint.Chain.t, err) connectionKey := host.ConnectionKey(endpoint.Counterparty.ConnectionID) proof, height := endpoint.Counterparty.Chain.QueryProof(connectionKey) @@ -277,17 +327,20 @@ func (endpoint *Endpoint) ChanOpenInit() error { return err } - endpoint.ChannelID, err = ibctesting.ParseChannelIDFromEvents(res.GetEvents()) + endpoint.ChannelID, err = ParseChannelIDFromEvents(res.GetEvents()) require.NoError(endpoint.Chain.t, err) + // update version to selected app version + // NOTE: this update must be performed after SendMsgs() + endpoint.ChannelConfig.Version = endpoint.GetChannel().Version + return nil } // ChanOpenTry will construct and execute a MsgChannelOpenTry on the associated endpoint. func (endpoint *Endpoint) ChanOpenTry() error { - if err := endpoint.UpdateClient(); err != nil { - return err - } + err := endpoint.UpdateClient() + require.NoError(endpoint.Chain.t, err) channelKey := host.ChannelKey(endpoint.Counterparty.ChannelConfig.PortID, endpoint.Counterparty.ChannelID) proof, height := endpoint.Counterparty.Chain.QueryProof(channelKey) @@ -305,18 +358,21 @@ func (endpoint *Endpoint) ChanOpenTry() error { } if endpoint.ChannelID == "" { - endpoint.ChannelID, err = ibctesting.ParseChannelIDFromEvents(res.GetEvents()) + endpoint.ChannelID, err = ParseChannelIDFromEvents(res.GetEvents()) require.NoError(endpoint.Chain.t, err) } + // update version to selected app version + // NOTE: this update must be performed after the endpoint channelID is set + endpoint.ChannelConfig.Version = endpoint.GetChannel().Version + return nil } // ChanOpenAck will construct and execute a MsgChannelOpenAck on the associated endpoint. func (endpoint *Endpoint) ChanOpenAck() error { - if err := endpoint.UpdateClient(); err != nil { - return err - } + err := endpoint.UpdateClient() + require.NoError(endpoint.Chain.t, err) channelKey := host.ChannelKey(endpoint.Counterparty.ChannelConfig.PortID, endpoint.Counterparty.ChannelID) proof, height := endpoint.Counterparty.Chain.QueryProof(channelKey) @@ -327,14 +383,18 @@ func (endpoint *Endpoint) ChanOpenAck() error { proof, height, endpoint.Chain.SenderAccount.GetAddress().String(), ) - return endpoint.Chain.sendMsgs(msg) + if err := endpoint.Chain.sendMsgs(msg); err != nil { + return err + } + + endpoint.ChannelConfig.Version = endpoint.GetChannel().Version + return nil } // ChanOpenConfirm will construct and execute a MsgChannelOpenConfirm on the associated endpoint. func (endpoint *Endpoint) ChanOpenConfirm() error { - if err := endpoint.UpdateClient(); err != nil { - return err - } + err := endpoint.UpdateClient() + require.NoError(endpoint.Chain.t, err) channelKey := host.ChannelKey(endpoint.Counterparty.ChannelConfig.PortID, endpoint.Counterparty.ChannelID) proof, height := endpoint.Counterparty.Chain.QueryProof(channelKey) @@ -371,9 +431,48 @@ func (endpoint *Endpoint) ChanCloseConfirm() error { return endpoint.Chain.sendMsgs(msg) } +// SendPacket sends a packet through the channel keeper using the associated endpoint +// The counterparty client is updated so proofs can be sent to the counterparty chain. +// The packet sequence generated for the packet to be sent is returned. An error +// is returned if one occurs. +func (endpoint *Endpoint) SendPacket( + timeoutHeight clienttypes.Height, + timeoutTimestamp uint64, + data []byte, +) (uint64, error) { + channelCap := endpoint.Chain.GetChannelCapability(endpoint.ChannelConfig.PortID, endpoint.ChannelID) + + // no need to send message, acting as a module + sequence, err := endpoint.Chain.App.GetIBCKeeper().ChannelKeeper.SendPacket(endpoint.Chain.GetContext(), channelCap, endpoint.ChannelConfig.PortID, endpoint.ChannelID, timeoutHeight, timeoutTimestamp, data) + if err != nil { + return 0, err + } + + // commit changes since no message was sent + endpoint.Chain.Coordinator.CommitBlock(endpoint.Chain) + + err = endpoint.Counterparty.UpdateClient() + if err != nil { + return 0, err + } + + return sequence, nil +} + // RecvPacket receives a packet on the associated endpoint. // The counterparty client is updated. func (endpoint *Endpoint) RecvPacket(packet channeltypes.Packet) error { + _, err := endpoint.RecvPacketWithResult(packet) + if err != nil { + return err + } + + return nil +} + +// RecvPacketWithResult receives a packet on the associated endpoint and the result +// of the transaction is returned. The counterparty client is updated. +func (endpoint *Endpoint) RecvPacketWithResult(packet channeltypes.Packet) (*abci.ExecTxResult, error) { // get proof of packet commitment on source packetKey := host.PacketCommitmentKey(packet.GetSourcePort(), packet.GetSourceChannel(), packet.GetSequence()) proof, proofHeight := endpoint.Counterparty.Chain.QueryProof(packetKey) @@ -381,10 +480,32 @@ func (endpoint *Endpoint) RecvPacket(packet channeltypes.Packet) error { recvMsg := channeltypes.NewMsgRecvPacket(packet, proof, proofHeight, endpoint.Chain.SenderAccount.GetAddress().String()) // receive on counterparty and update source client - if err := endpoint.Chain.sendMsgs(recvMsg); err != nil { + res, err := endpoint.Chain.SendMsgs(recvMsg) + if err != nil { + return nil, err + } + + if err := endpoint.Counterparty.UpdateClient(); err != nil { + return nil, err + } + + return res, nil +} + +// WriteAcknowledgement writes an acknowledgement on the channel associated with the endpoint. +// The counterparty client is updated. +func (endpoint *Endpoint) WriteAcknowledgement(ack exported.Acknowledgement, packet exported.PacketI) error { + channelCap := endpoint.Chain.GetChannelCapability(packet.GetDestPort(), packet.GetDestChannel()) + + // no need to send message, acting as a handler + err := endpoint.Chain.App.GetIBCKeeper().ChannelKeeper.WriteAcknowledgement(endpoint.Chain.GetContext(), channelCap, packet, ack) + if err != nil { return err } + // commit changes since no message was sent + endpoint.Chain.Coordinator.CommitBlock(endpoint.Chain) + return endpoint.Counterparty.UpdateClient() } @@ -424,3 +545,110 @@ func (endpoint *Endpoint) TimeoutPacket(packet channeltypes.Packet) error { return endpoint.Chain.sendMsgs(timeoutMsg) } + +// TimeoutOnClose sends a MsgTimeoutOnClose to the channel associated with the endpoint. +func (endpoint *Endpoint) TimeoutOnClose(packet channeltypes.Packet) error { + // get proof for timeout based on channel order + var packetKey []byte + + switch endpoint.ChannelConfig.Order { + case channeltypes.ORDERED: + packetKey = host.NextSequenceRecvKey(packet.GetDestPort(), packet.GetDestChannel()) + case channeltypes.UNORDERED: + packetKey = host.PacketReceiptKey(packet.GetDestPort(), packet.GetDestChannel(), packet.GetSequence()) + default: + return fmt.Errorf("unsupported order type %s", endpoint.ChannelConfig.Order) + } + + proof, proofHeight := endpoint.Counterparty.QueryProof(packetKey) + + channelKey := host.ChannelKey(packet.GetDestPort(), packet.GetDestChannel()) + proofClosed, _ := endpoint.Counterparty.QueryProof(channelKey) + + nextSeqRecv, found := endpoint.Counterparty.Chain.App.GetIBCKeeper().ChannelKeeper.GetNextSequenceRecv(endpoint.Counterparty.Chain.GetContext(), endpoint.ChannelConfig.PortID, endpoint.ChannelID) + require.True(endpoint.Chain.t, found) + + timeoutOnCloseMsg := channeltypes.NewMsgTimeoutOnClose( + packet, nextSeqRecv, + proof, proofClosed, proofHeight, endpoint.Chain.SenderAccount.GetAddress().String(), + ) + + return endpoint.Chain.sendMsgs(timeoutOnCloseMsg) +} + +// SetChannelClosed sets a channel state to CLOSED. +func (endpoint *Endpoint) SetChannelClosed() error { + channel := endpoint.GetChannel() + + channel.State = channeltypes.CLOSED + endpoint.Chain.App.GetIBCKeeper().ChannelKeeper.SetChannel(endpoint.Chain.GetContext(), endpoint.ChannelConfig.PortID, endpoint.ChannelID, channel) + + endpoint.Chain.Coordinator.CommitBlock(endpoint.Chain) + + return endpoint.Counterparty.UpdateClient() +} + +// GetClientState retrieves the Client State for this endpoint. The +// client state is expected to exist otherwise testing will fail. +func (endpoint *Endpoint) GetClientState() exported.ClientState { + return endpoint.Chain.GetClientState(endpoint.ClientID) +} + +// SetClientState sets the client state for this endpoint. +func (endpoint *Endpoint) SetClientState(clientState exported.ClientState) { + endpoint.Chain.App.GetIBCKeeper().ClientKeeper.SetClientState(endpoint.Chain.GetContext(), endpoint.ClientID, clientState) +} + +// GetConsensusState retrieves the Consensus State for this endpoint at the provided height. +// The consensus state is expected to exist otherwise testing will fail. +func (endpoint *Endpoint) GetConsensusState(height exported.Height) exported.ConsensusState { + consensusState, found := endpoint.Chain.GetConsensusState(endpoint.ClientID, height) + require.True(endpoint.Chain.t, found) + + return consensusState +} + +// SetConsensusState sets the consensus state for this endpoint. +func (endpoint *Endpoint) SetConsensusState(consensusState exported.ConsensusState, height exported.Height) { + endpoint.Chain.App.GetIBCKeeper().ClientKeeper.SetClientConsensusState(endpoint.Chain.GetContext(), endpoint.ClientID, height, consensusState) +} + +// GetConnection retrieves an IBC Connection for the endpoint. The +// connection is expected to exist otherwise testing will fail. +func (endpoint *Endpoint) GetConnection() connectiontypes.ConnectionEnd { + connection, found := endpoint.Chain.App.GetIBCKeeper().ConnectionKeeper.GetConnection(endpoint.Chain.GetContext(), endpoint.ConnectionID) + require.True(endpoint.Chain.t, found) + + return connection +} + +// SetConnection sets the connection for this endpoint. +func (endpoint *Endpoint) SetConnection(connection connectiontypes.ConnectionEnd) { + endpoint.Chain.App.GetIBCKeeper().ConnectionKeeper.SetConnection(endpoint.Chain.GetContext(), endpoint.ConnectionID, connection) +} + +// GetChannel retrieves an IBC Channel for the endpoint. The channel +// is expected to exist otherwise testing will fail. +func (endpoint *Endpoint) GetChannel() channeltypes.Channel { + channel, found := endpoint.Chain.App.GetIBCKeeper().ChannelKeeper.GetChannel(endpoint.Chain.GetContext(), endpoint.ChannelConfig.PortID, endpoint.ChannelID) + require.True(endpoint.Chain.t, found) + + return channel +} + +// SetChannel sets the channel for this endpoint. +func (endpoint *Endpoint) SetChannel(channel channeltypes.Channel) { + endpoint.Chain.App.GetIBCKeeper().ChannelKeeper.SetChannel(endpoint.Chain.GetContext(), endpoint.ChannelConfig.PortID, endpoint.ChannelID, channel) +} + +// QueryClientStateProof performs and abci query for a client stat associated +// with this endpoint and returns the ClientState along with the proof. +func (endpoint *Endpoint) QueryClientStateProof() (exported.ClientState, []byte) { + // retrieve client state to provide proof for + clientState := endpoint.GetClientState() + + clientKey := host.FullClientStateKey(endpoint.ClientID) + proofClient, _ := endpoint.QueryProof(clientKey) + + return clientState, proofClient +} diff --git a/app/ibctesting/event_utils.go b/app/ibctesting/event_utils.go index 8b6ed2981..5432ac9a4 100644 --- a/app/ibctesting/event_utils.go +++ b/app/ibctesting/event_utils.go @@ -1,27 +1,19 @@ package ibctesting import ( + "encoding/hex" "fmt" "strconv" "strings" + connectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" + abci "github.com/cometbft/cometbft/abci/types" sdk "github.com/cosmos/cosmos-sdk/types" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" ) -func getSendPackets(evts []abci.Event) []channeltypes.Packet { - var res []channeltypes.Packet - for _, evt := range evts { - if evt.Type == "send_packet" { - packet := parsePacketFromEvent(evt) - res = append(res, packet) - } - } - return res -} - func getAckPackets(evts []abci.Event) []PacketAck { var res []PacketAck for _, evt := range evts { @@ -66,7 +58,7 @@ func ParsePacketFromEvents(events sdk.Events) (channeltypes.Packet, error) { packet := channeltypes.Packet{} for _, attr := range ev.Attributes { switch attr.Key { - case channeltypes.AttributeKeyData: //nolint: staticcheck + case channeltypes.AttributeKeyData: packet.Data = []byte(attr.Value) case channeltypes.AttributeKeySequence: @@ -149,3 +141,112 @@ func parseTimeoutHeight(raw string) clienttypes.Height { RevisionHeight: toUint64(chunks[1]), } } + +// ParseAckFromEvents parses events emitted from a MsgRecvPacket and returns the +// acknowledgement. +func ParseAckFromEvents(events []abci.Event) ([]byte, error) { + for _, ev := range events { + if ev.Type == channeltypes.EventTypeWriteAck { + for _, attr := range ev.Attributes { + if attr.Key == channeltypes.AttributeKeyAckHex { + bz, err := hex.DecodeString(attr.Value) + if err != nil { + panic(err) + } + return bz, nil + } + } + } + } + return nil, fmt.Errorf("acknowledgement event attribute not found") +} + +// ParseClientIDFromEvents parses events emitted from a MsgCreateClient and returns the +// client identifier. +func ParseClientIDFromEvents(events []abci.Event) (string, error) { + for _, ev := range events { + if ev.Type == clienttypes.EventTypeCreateClient { + for _, attr := range ev.Attributes { + if attr.Key == clienttypes.AttributeKeyClientID { + return attr.Value, nil + } + } + } + } + return "", fmt.Errorf("client identifier event attribute not found") +} + +// ParseConnectionIDFromEvents parses events emitted from a MsgConnectionOpenInit or +// MsgConnectionOpenTry and returns the connection identifier. +func ParseConnectionIDFromEvents(events []abci.Event) (string, error) { + for _, ev := range events { + if ev.Type == connectiontypes.EventTypeConnectionOpenInit || + ev.Type == connectiontypes.EventTypeConnectionOpenTry { + for _, attr := range ev.Attributes { + if attr.Key == connectiontypes.AttributeKeyConnectionID { + return attr.Value, nil + } + } + } + } + return "", fmt.Errorf("connection identifier event attribute not found") +} + +func GetSendPackets(evts []abci.Event) []channeltypes.Packet { + var res []channeltypes.Packet + for _, evt := range evts { + if evt.Type == channeltypes.EventTypeSendPacket { + packet := ParsePacketFromEvent(evt) + res = append(res, packet) + } + } + return res +} + +// Used for various debug statements above when needed... do not remove +// func showEvent(evt abci.Event) { +// fmt.Printf("evt.Type: %s\n", evt.Type) +// for _, attr := range evt.Attributes { +// fmt.Printf(" %s = %s\n", string(attr.Key), string(attr.Value)) +// } +//} + +func ParsePacketFromEvent(evt abci.Event) channeltypes.Packet { + return channeltypes.Packet{ + Sequence: getUintField(evt, channeltypes.AttributeKeySequence), + SourcePort: getField(evt, channeltypes.AttributeKeySrcPort), + SourceChannel: getField(evt, channeltypes.AttributeKeySrcChannel), + DestinationPort: getField(evt, channeltypes.AttributeKeyDstPort), + DestinationChannel: getField(evt, channeltypes.AttributeKeyDstChannel), + Data: getHexField(evt, channeltypes.AttributeKeyDataHex), + TimeoutHeight: parseTimeoutHeight(getField(evt, channeltypes.AttributeKeyTimeoutHeight)), + TimeoutTimestamp: getUintField(evt, channeltypes.AttributeKeyTimeoutTimestamp), + } +} + +func getHexField(evt abci.Event, key string) []byte { + got := getField(evt, key) + if got == "" { + return nil + } + bz, err := hex.DecodeString(got) + if err != nil { + panic(err) + } + return bz +} + +// ParseChannelIDFromEvents parses events emitted from a MsgChannelOpenInit or +// MsgChannelOpenTry and returns the channel identifier. +func ParseChannelIDFromEvents(events []abci.Event) (string, error) { + for _, ev := range events { + if ev.Type == channeltypes.EventTypeChannelOpenInit || ev.Type == channeltypes.EventTypeChannelOpenTry { + for _, attr := range ev.Attributes { + if attr.Key == channeltypes.AttributeKeyChannelID { + return attr.Value, nil + } + } + } + } + return "", fmt.Errorf("channel identifier event attribute not found") +} diff --git a/app/ibctesting/helper.go b/app/ibctesting/helper.go new file mode 100644 index 000000000..f875b9a0e --- /dev/null +++ b/app/ibctesting/helper.go @@ -0,0 +1,16 @@ +package ibctesting + +import ( + "testing" + + tmtypes "github.com/cometbft/cometbft/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/notional-labs/composable/v6/app" +) + +// DefaultComposableAppFactory instantiates and sets up the default Composable App +func DefaultComposableAppFactory(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs []authtypes.GenesisAccount, chainID string, balances ...banktypes.Balance) ChainApp { + t.Helper() + return app.SetupWithGenesisValSet(t, valSet, genAccs, chainID, balances...) +} diff --git a/app/ibctesting/path.go b/app/ibctesting/path.go index 1d1eb3324..0bc494305 100644 --- a/app/ibctesting/path.go +++ b/app/ibctesting/path.go @@ -1,7 +1,12 @@ package ibctesting import ( - ibctesting "github.com/cosmos/ibc-go/v7/testing" + "bytes" + "fmt" + + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + + sdk "github.com/cosmos/cosmos-sdk/types" ) // Path contains two endpoints representing two chains connected over IBC @@ -26,13 +31,79 @@ func NewPath(chainA, chainB *TestChain) *Path { } } -// NewDefaultEndpoint constructs a new endpoint using default values. -// CONTRACT: the counterparty endpoitn must be set by the caller. -func NewDefaultEndpoint(chain *TestChain) *Endpoint { - return &Endpoint{ - Chain: chain, - ClientConfig: ibctesting.NewTendermintConfig(chain.UseWasmClient), - ConnectionConfig: ibctesting.NewConnectionConfig(), - ChannelConfig: ibctesting.NewChannelConfig(), +// SetChannelOrdered sets the channel order for both endpoints to ORDERED. +func (path *Path) SetChannelOrdered() { + path.EndpointA.ChannelConfig.Order = channeltypes.ORDERED + path.EndpointB.ChannelConfig.Order = channeltypes.ORDERED +} + +// RelayPacket attempts to relay the packet first on EndpointA and then on EndpointB +// if EndpointA does not contain a packet commitment for that packet. An error is returned +// if a relay step fails or the packet commitment does not exist on either endpoint. +func (path *Path) RelayPacket(packet channeltypes.Packet, _ []byte) error { + pc := path.EndpointA.Chain.App.GetIBCKeeper().ChannelKeeper.GetPacketCommitment(path.EndpointA.Chain.GetContext(), packet.GetSourcePort(), packet.GetSourceChannel(), packet.GetSequence()) + if bytes.Equal(pc, channeltypes.CommitPacket(path.EndpointA.Chain.App.AppCodec(), packet)) { + + // packet found, relay from A to B + if err := path.EndpointB.UpdateClient(); err != nil { + return err + } + + res, err := path.EndpointB.RecvPacketWithResult(packet) + if err != nil { + return err + } + + ack, err := ParseAckFromEvents(res.GetEvents()) + if err != nil { + return err + } + + err = path.EndpointA.AcknowledgePacket(packet, ack) + + return err + } + + pc = path.EndpointB.Chain.App.GetIBCKeeper().ChannelKeeper.GetPacketCommitment(path.EndpointB.Chain.GetContext(), packet.GetSourcePort(), packet.GetSourceChannel(), packet.GetSequence()) + if bytes.Equal(pc, channeltypes.CommitPacket(path.EndpointB.Chain.App.AppCodec(), packet)) { + + // packet found, relay B to A + if err := path.EndpointA.UpdateClient(); err != nil { + return err + } + + res, err := path.EndpointA.RecvPacketWithResult(packet) + if err != nil { + return err + } + + ack, err := ParseAckFromEvents(res.GetEvents()) + if err != nil { + return err + } + + err = path.EndpointB.AcknowledgePacket(packet, ack) + return err + } + + return fmt.Errorf("packet commitment does not exist on either endpoint for provided packet") +} + +// SendMsg delivers the provided messages to the chain. The counterparty +// client is updated with the new source consensus state. +func (path *Path) SendMsg(msgs ...sdk.Msg) error { + if err := path.EndpointA.Chain.sendMsgs(msgs...); err != nil { + return err + } + if err := path.EndpointA.UpdateClient(); err != nil { + return err + } + return path.EndpointB.UpdateClient() +} + +func (path *Path) Invert() *Path { + return &Path{ + EndpointA: path.EndpointB, + EndpointB: path.EndpointA, } } diff --git a/app/ibctesting/simapp/README.md b/app/ibctesting/simapp/README.md deleted file mode 100644 index fc449f7f2..000000000 --- a/app/ibctesting/simapp/README.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -order: false ---- - -# simapp - -simapp is an application built using the Cosmos SDK for testing and educational purposes. - -## Running testnets with `simd` - -If you want to spin up a quick testnet with your friends, you can follow these steps. -Unless otherwise noted, every step must be done by everyone who wants to participate -in this testnet. - -1. `$ make build`. This will build the `simd` binary and install it in your Cosmos SDK repo, - inside a new `build` directory. The following instructions are run from inside - that directory. -2. If you've run `simd` before, you may need to reset your database before starting a new - testnet: `$ ./simd unsafe-reset-all` -3. `$ ./simd init [moniker]`. This will initialize a new working directory, by default at - `~/.simapp`. You need a provide a "moniker," but it doesn't matter what it is. -4. `$ ./simd keys add [key_name]`. This will create a new key, with a name of your choosing. - Save the output of this command somewhere; you'll need the address generated here later. -5. `$ ./simd add-genesis-account $(simd keys show [key_name] -a) [amount]`, where `key_name` - is the same key name as before; and `amount` is something like `10000000000000000000000000stake`. -6. `$ ./simd gentx [key_name] [amount] --chain-id [chain-id]`. This will create the - genesis transaction for your new chain. -7. Now, one person needs to create the genesis file `genesis.json` using the genesis transactions - from every participant, by gathering all the genesis transactions under `config/gentx` and then - calling `./simd collect-gentxs`. This will create a new `genesis.json` file that includes data - from all the validators (we sometimes call it the "super genesis file" to distinguish it from - single-validator genesis files). -8. Once you've received the super genesis file, overwrite your original `genesis.json` file with - the new super `genesis.json`. -9. Modify your `config/config.toml` (in the simapp working directory) to include the other participants as - persistent peers: - - ``` - # Comma separated list of nodes to keep persistent connections to - persistent_peers = "[validator address]@[ip address]:[port],[validator address]@[ip address]:[port]" - ``` - - You can find `validator address` by running `./simd tendermint show-node-id`. (It will be hex-encoded.) - By default, `port` is 26656. -10. Now you can start your nodes: `$ ./simd start`. - -Now you have a small testnet that you can use to try out changes to the Cosmos SDK or Tendermint! - -NOTE: Sometimes creating the network through the `collect-gentxs` will fail, and validators will start -in a funny state (and then panic). If this happens, you can try to create and start the network first -with a single validator and then add additional validators using a `create-validator` transaction. \ No newline at end of file diff --git a/app/ibctesting/simapp/ante_handler.go b/app/ibctesting/simapp/ante_handler.go deleted file mode 100644 index 44569e2e3..000000000 --- a/app/ibctesting/simapp/ante_handler.go +++ /dev/null @@ -1,49 +0,0 @@ -package simapp - -import ( - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/x/auth/ante" - - ibcante "github.com/cosmos/ibc-go/v7/modules/core/ante" - "github.com/cosmos/ibc-go/v7/modules/core/keeper" -) - -// HandlerOptions extend the SDK's AnteHandler options by requiring the IBC keeper. -type HandlerOptions struct { - ante.HandlerOptions - - IBCKeeper *keeper.Keeper -} - -// NewAnteHandler creates a new ante handler -func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { - if options.AccountKeeper == nil { - return nil, errors.Wrap(sdkerrors.ErrLogic, "account keeper is required for AnteHandler") - } - if options.BankKeeper == nil { - return nil, errors.Wrap(sdkerrors.ErrLogic, "bank keeper is required for AnteHandler") - } - if options.SignModeHandler == nil { - return nil, errors.Wrap(sdkerrors.ErrLogic, "sign mode handler is required for AnteHandler") - } - - anteDecorators := []sdk.AnteDecorator{ - ante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first - ante.NewExtensionOptionsDecorator(options.ExtensionOptionChecker), - ante.NewValidateBasicDecorator(), - ante.NewTxTimeoutHeightDecorator(), - ante.NewValidateMemoDecorator(options.AccountKeeper), - ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), - ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker), - ante.NewSetPubKeyDecorator(options.AccountKeeper), // SetPubKeyDecorator must be called before all signature verification decorators - ante.NewValidateSigCountDecorator(options.AccountKeeper), - ante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer), - ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler), - ante.NewIncrementSequenceDecorator(options.AccountKeeper), - ibcante.NewRedundantRelayDecorator(options.IBCKeeper), - } - - return sdk.ChainAnteDecorators(anteDecorators...), nil -} diff --git a/app/ibctesting/simapp/app.go b/app/ibctesting/simapp/app.go deleted file mode 100644 index 3a53b9e56..000000000 --- a/app/ibctesting/simapp/app.go +++ /dev/null @@ -1,1021 +0,0 @@ -package simapp - -import ( - "encoding/json" - "fmt" - "io" - "net/http" - "os" - "path/filepath" - - autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" - reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1" - dbm "github.com/cometbft/cometbft-db" - abci "github.com/cometbft/cometbft/abci/types" - "github.com/cometbft/cometbft/libs/log" - tmos "github.com/cometbft/cometbft/libs/os" - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/client" - _ "github.com/cosmos/cosmos-sdk/client/docs/statik" // this is used for serving docs - nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" - "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/codec/types" - runtimeservices "github.com/cosmos/cosmos-sdk/runtime/services" - "github.com/cosmos/cosmos-sdk/server/api" - "github.com/cosmos/cosmos-sdk/server/config" - servertypes "github.com/cosmos/cosmos-sdk/server/types" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - "github.com/cosmos/cosmos-sdk/testutil/testdata" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - "github.com/cosmos/cosmos-sdk/version" - "github.com/cosmos/cosmos-sdk/x/auth" - "github.com/cosmos/cosmos-sdk/x/auth/ante" - authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" - authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" - authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/cosmos/cosmos-sdk/x/auth/vesting" - vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - authz "github.com/cosmos/cosmos-sdk/x/authz" - authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" - authzmodule "github.com/cosmos/cosmos-sdk/x/authz/module" - "github.com/cosmos/cosmos-sdk/x/bank" - bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/capability" - capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" - "github.com/cosmos/cosmos-sdk/x/consensus" - consensusparamkeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" - consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types" - "github.com/cosmos/cosmos-sdk/x/crisis" - crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper" - crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" - distr "github.com/cosmos/cosmos-sdk/x/distribution" - distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" - distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - "github.com/cosmos/cosmos-sdk/x/evidence" - evidencekeeper "github.com/cosmos/cosmos-sdk/x/evidence/keeper" - evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" - "github.com/cosmos/cosmos-sdk/x/feegrant" - feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper" - feegrantmodule "github.com/cosmos/cosmos-sdk/x/feegrant/module" - "github.com/cosmos/cosmos-sdk/x/genutil" - genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" - "github.com/cosmos/cosmos-sdk/x/gov" - govclient "github.com/cosmos/cosmos-sdk/x/gov/client" - govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/cosmos/cosmos-sdk/x/group" - groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper" - groupmodule "github.com/cosmos/cosmos-sdk/x/group/module" - "github.com/cosmos/cosmos-sdk/x/params" - paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" - paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" - paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" - paramproposal "github.com/cosmos/cosmos-sdk/x/params/types/proposal" - "github.com/cosmos/cosmos-sdk/x/slashing" - slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - "github.com/cosmos/cosmos-sdk/x/staking" - stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/cosmos/cosmos-sdk/x/upgrade" - upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client" - upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - "github.com/gorilla/mux" - - // TODO: mint module not complete yet, - "github.com/notional-labs/composable/v6/x/mint" - mintkeeper "github.com/notional-labs/composable/v6/x/mint/keeper" - minttypes "github.com/notional-labs/composable/v6/x/mint/types" - - "github.com/rakyll/statik/fs" - "github.com/spf13/cast" - - ica "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts" - icacontroller "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller" - icacontrollerkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/keeper" - icacontrollertypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/types" - icahost "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host" - icahostkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/keeper" - icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" - icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - ibcfee "github.com/cosmos/ibc-go/v7/modules/apps/29-fee" - ibcfeekeeper "github.com/cosmos/ibc-go/v7/modules/apps/29-fee/keeper" - ibcfeetypes "github.com/cosmos/ibc-go/v7/modules/apps/29-fee/types" - transfer "github.com/cosmos/ibc-go/v7/modules/apps/transfer" - ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper" - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - ibc "github.com/cosmos/ibc-go/v7/modules/core" - ibcclient "github.com/cosmos/ibc-go/v7/modules/core/02-client" - ibcclientclient "github.com/cosmos/ibc-go/v7/modules/core/02-client/client" - ibcclienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - solomachine "github.com/cosmos/ibc-go/v7/modules/light-clients/06-solomachine" - ibctm "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - wasm08 "github.com/cosmos/ibc-go/v7/modules/light-clients/08-wasm/keeper" - ibcmock "github.com/cosmos/ibc-go/v7/testing/mock" - ibctestingtypes "github.com/cosmos/ibc-go/v7/testing/types" - - simappparams "github.com/notional-labs/composable/v6/app/ibctesting/simapp/params" - simappupgrades "github.com/notional-labs/composable/v6/app/ibctesting/simapp/upgrades" - v6 "github.com/notional-labs/composable/v6/app/ibctesting/simapp/upgrades/v6" - v7 "github.com/notional-labs/composable/v6/app/ibctesting/simapp/upgrades/v7" - ibctransfermiddleware "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/keeper" - ibctransfermiddlewaretypes "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types" - transfermiddleware "github.com/notional-labs/composable/v6/x/transfermiddleware" - transfermiddlewarekeeper "github.com/notional-labs/composable/v6/x/transfermiddleware/keeper" - transfermiddlewaretypes "github.com/notional-labs/composable/v6/x/transfermiddleware/types" -) - -const appName = "SimApp" - -// IBC application testing ports -const ( - MockFeePort string = ibcmock.ModuleName + ibcfeetypes.ModuleName -) - -var ( - // DefaultNodeHome default home directories for the application daemon - DefaultNodeHome string - - // ModuleBasics defines the module BasicManager is in charge of setting up basic, - // non-dependant module elements, such as codec registration - // and genesis verification. - ModuleBasics = module.NewBasicManager( - auth.AppModuleBasic{}, - genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator), - bank.AppModuleBasic{}, - capability.AppModuleBasic{}, - staking.AppModuleBasic{}, - mint.AppModuleBasic{}, - distr.AppModuleBasic{}, - gov.NewAppModuleBasic( - []govclient.ProposalHandler{ - paramsclient.ProposalHandler, - upgradeclient.LegacyProposalHandler, - upgradeclient.LegacyCancelProposalHandler, - ibcclientclient.UpdateClientProposalHandler, - ibcclientclient.UpgradeProposalHandler, - }, - ), - groupmodule.AppModuleBasic{}, - params.AppModuleBasic{}, - crisis.AppModuleBasic{}, - slashing.AppModuleBasic{}, - ibc.AppModuleBasic{}, - ibctm.AppModuleBasic{}, - solomachine.AppModuleBasic{}, - feegrantmodule.AppModuleBasic{}, - upgrade.AppModuleBasic{}, - evidence.AppModuleBasic{}, - transfer.AppModuleBasic{}, - ibcmock.AppModuleBasic{}, - ica.AppModuleBasic{}, - authzmodule.AppModuleBasic{}, - vesting.AppModuleBasic{}, - ibcfee.AppModuleBasic{}, - consensus.AppModuleBasic{}, - ) - - // module account permissions - maccPerms = map[string][]string{ - authtypes.FeeCollectorName: nil, - distrtypes.ModuleName: nil, - minttypes.ModuleName: {authtypes.Minter}, - stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, - stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, - govtypes.ModuleName: {authtypes.Burner}, - ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - ibcfeetypes.ModuleName: nil, - icatypes.ModuleName: nil, - ibcmock.ModuleName: nil, - } -) - -var ( - _ App = (*SimApp)(nil) - _ servertypes.Application = (*SimApp)(nil) -) - -// SimApp extends an ABCI application, but with most of its parameters exported. -// They are exported for convenience in creating helper functions, as object -// capabilities aren't needed for testing. -type SimApp struct { - *baseapp.BaseApp - legacyAmino *codec.LegacyAmino - appCodec codec.Codec - interfaceRegistry types.InterfaceRegistry - txConfig client.TxConfig - - invCheckPeriod uint - - // keys to access the substores - keys map[string]*storetypes.KVStoreKey - tkeys map[string]*storetypes.TransientStoreKey - memKeys map[string]*storetypes.MemoryStoreKey - - // keepers - AccountKeeper authkeeper.AccountKeeper - BankKeeper bankkeeper.Keeper - CapabilityKeeper *capabilitykeeper.Keeper - StakingKeeper *stakingkeeper.Keeper - SlashingKeeper slashingkeeper.Keeper - MintKeeper mintkeeper.Keeper - DistrKeeper distrkeeper.Keeper - GovKeeper govkeeper.Keeper - GroupKeeper groupkeeper.Keeper - CrisisKeeper *crisiskeeper.Keeper - UpgradeKeeper *upgradekeeper.Keeper - ParamsKeeper paramskeeper.Keeper - Wasm08Keeper wasm08.Keeper - AuthzKeeper authzkeeper.Keeper - IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly - IBCFeeKeeper ibcfeekeeper.Keeper - ICAControllerKeeper icacontrollerkeeper.Keeper - ICAHostKeeper icahostkeeper.Keeper - EvidenceKeeper evidencekeeper.Keeper - TransferKeeper ibctransferkeeper.Keeper - FeeGrantKeeper feegrantkeeper.Keeper - ConsensusParamsKeeper consensusparamkeeper.Keeper - - // make scoped keepers public for test purposes - ScopedIBCKeeper capabilitykeeper.ScopedKeeper - ScopedTransferKeeper capabilitykeeper.ScopedKeeper - ScopedFeeMockKeeper capabilitykeeper.ScopedKeeper - ScopedICAControllerKeeper capabilitykeeper.ScopedKeeper - ScopedICAHostKeeper capabilitykeeper.ScopedKeeper - ScopedIBCMockKeeper capabilitykeeper.ScopedKeeper - ScopedICAMockKeeper capabilitykeeper.ScopedKeeper - - // make IBC modules public for test purposes - // these modules are never directly routed to by the IBC Router - ICAAuthModule ibcmock.IBCModule - FeeMockModule ibcmock.IBCModule - - TransferMiddlewarekeeper transfermiddlewarekeeper.Keeper - IbcTransferMiddlewareKeeper ibctransfermiddleware.Keeper - - // the module manager - mm *module.Manager - - // simulation manager - sm *module.SimulationManager - - // the configurator - configurator module.Configurator -} - -func init() { - userHomeDir, err := os.UserHomeDir() - if err != nil { - panic(err) - } - - DefaultNodeHome = filepath.Join(userHomeDir, ".simapp") -} - -// NewSimApp returns a reference to an initialized SimApp. -func NewSimApp( - logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest bool, skipUpgradeHeights map[int64]bool, - homePath string, invCheckPeriod uint, encodingConfig simappparams.EncodingConfig, - appOpts servertypes.AppOptions, baseAppOptions ...func(*baseapp.BaseApp), -) *SimApp { - appCodec := encodingConfig.Marshaler - legacyAmino := encodingConfig.Amino - interfaceRegistry := encodingConfig.InterfaceRegistry - - bApp := baseapp.NewBaseApp(appName, logger, db, encodingConfig.TxConfig.TxDecoder(), baseAppOptions...) - bApp.SetCommitMultiStoreTracer(traceStore) - bApp.SetVersion(version.Version) - bApp.SetInterfaceRegistry(interfaceRegistry) - - keys := sdk.NewKVStoreKeys( - authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, crisistypes.StoreKey, - minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey, - govtypes.StoreKey, group.StoreKey, paramstypes.StoreKey, ibcexported.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, - evidencetypes.StoreKey, ibctransfertypes.StoreKey, icacontrollertypes.StoreKey, icahosttypes.StoreKey, capabilitytypes.StoreKey, - authzkeeper.StoreKey, ibcfeetypes.StoreKey, consensusparamtypes.StoreKey, - ) - tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey) - memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) - - app := &SimApp{ - BaseApp: bApp, - legacyAmino: legacyAmino, - appCodec: appCodec, - interfaceRegistry: interfaceRegistry, - invCheckPeriod: invCheckPeriod, - keys: keys, - tkeys: tkeys, - memKeys: memKeys, - txConfig: encodingConfig.TxConfig, - } - - app.ParamsKeeper = initParamsKeeper(appCodec, legacyAmino, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey]) - - // set the BaseApp's parameter store - app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, keys[consensusparamtypes.StoreKey], authtypes.NewModuleAddress(govtypes.ModuleName).String()) - bApp.SetParamStore(&app.ConsensusParamsKeeper) - - // add capability keeper and ScopeToModule for ibc module - app.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, keys[capabilitytypes.StoreKey], memKeys[capabilitytypes.MemStoreKey]) - scopedIBCKeeper := app.CapabilityKeeper.ScopeToModule(ibcexported.ModuleName) - scopedTransferKeeper := app.CapabilityKeeper.ScopeToModule(ibctransfertypes.ModuleName) - scopedICAControllerKeeper := app.CapabilityKeeper.ScopeToModule(icacontrollertypes.SubModuleName) - scopedICAHostKeeper := app.CapabilityKeeper.ScopeToModule(icahosttypes.SubModuleName) - - // NOTE: the IBC mock keeper and application module is used only for testing core IBC. Do - // not replicate if you do not need to test core IBC or light clients. - scopedIBCMockKeeper := app.CapabilityKeeper.ScopeToModule(ibcmock.ModuleName) - scopedFeeMockKeeper := app.CapabilityKeeper.ScopeToModule(MockFeePort) - scopedICAMockKeeper := app.CapabilityKeeper.ScopeToModule(ibcmock.ModuleName + icacontrollertypes.SubModuleName) - - // seal capability keeper after scoping modules - app.CapabilityKeeper.Seal() - - // SDK module keepers - - app.AccountKeeper = authkeeper.NewAccountKeeper(appCodec, keys[authtypes.StoreKey], authtypes.ProtoBaseAccount, maccPerms, sdk.GetConfig().GetBech32AccountAddrPrefix(), authtypes.NewModuleAddress(govtypes.ModuleName).String()) - - app.BankKeeper = bankkeeper.NewBaseKeeper( - appCodec, - keys[banktypes.StoreKey], - app.AccountKeeper, - BlockedAddresses(), - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - - // register the staking hooks - // NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks - app.StakingKeeper = stakingkeeper.NewKeeper( - appCodec, keys[stakingtypes.StoreKey], app.AccountKeeper, app.BankKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - - app.MintKeeper = mintkeeper.NewKeeper( - appCodec, keys[minttypes.StoreKey], app.StakingKeeper, - app.AccountKeeper, app.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - - app.DistrKeeper = distrkeeper.NewKeeper(appCodec, keys[distrtypes.StoreKey], app.AccountKeeper, app.BankKeeper, app.StakingKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String()) - - app.SlashingKeeper = slashingkeeper.NewKeeper( - appCodec, legacyAmino, keys[slashingtypes.StoreKey], app.StakingKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - - // register the staking hooks - // NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks - app.StakingKeeper.SetHooks( - stakingtypes.NewMultiStakingHooks(app.DistrKeeper.Hooks(), app.SlashingKeeper.Hooks()), - ) - - app.CrisisKeeper = crisiskeeper.NewKeeper(appCodec, keys[crisistypes.StoreKey], invCheckPeriod, - app.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String()) - - app.FeeGrantKeeper = feegrantkeeper.NewKeeper(appCodec, keys[feegrant.StoreKey], app.AccountKeeper) - app.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, keys[upgradetypes.StoreKey], appCodec, homePath, app.BaseApp, authtypes.NewModuleAddress(govtypes.ModuleName).String()) - app.IbcTransferMiddlewareKeeper = ibctransfermiddleware.NewKeeper(appCodec, keys[ibctransfermiddlewaretypes.StoreKey], authtypes.NewModuleAddress(govtypes.ModuleName).String(), - []string{ - "pica1ay9y5uns9khw2kzaqr3r33v2pkuptfnnunlt5x", - "pica14lz7gaw92valqjearnye4shex7zg2p05yfguqm", - "pica1r2zlh2xn85v8ljmwymnfrnsmdzjl7k6w9f2ja8", - "pica10556m38z4x6pqalr9rl5ytf3cff8q46nf36090", - }) - app.TransferMiddlewarekeeper = transfermiddlewarekeeper.NewKeeper( - keys[transfermiddlewaretypes.StoreKey], - app.GetSubspace(transfermiddlewaretypes.ModuleName), - appCodec, - app.IBCKeeper.ChannelKeeper, - app.TransferKeeper, - app.BankKeeper, - &app.IbcTransferMiddlewareKeeper, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - app.AuthzKeeper = authzkeeper.NewKeeper(keys[authzkeeper.StoreKey], appCodec, app.MsgServiceRouter(), app.AccountKeeper) - - // IBC Keepers - - app.IBCKeeper = ibckeeper.NewKeeper( - appCodec, keys[ibcexported.StoreKey], app.GetSubspace(ibcexported.ModuleName), app.StakingKeeper, app.UpgradeKeeper, scopedIBCKeeper, - ) - - // register the proposal types - govRouter := govv1beta1.NewRouter() - govRouter.AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler). - AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)). - AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.UpgradeKeeper)). - AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper)) - - govConfig := govtypes.DefaultConfig() - /* - Example of setting gov params: - govConfig.MaxMetadataLen = 10000 - */ - govKeeper := govkeeper.NewKeeper( - appCodec, keys[govtypes.StoreKey], app.AccountKeeper, app.BankKeeper, - app.StakingKeeper, app.MsgServiceRouter(), govConfig, authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - - // Set legacy router for backwards compatibility with gov v1beta1 - govKeeper.SetLegacyRouter(govRouter) - - app.GovKeeper = *govKeeper.SetHooks( - govtypes.NewMultiGovHooks( - // register the governance hooks - ), - ) - - groupConfig := group.DefaultConfig() - /* - Example of setting group params: - groupConfig.MaxMetadataLen = 1000 - */ - app.GroupKeeper = groupkeeper.NewKeeper(keys[group.StoreKey], appCodec, app.MsgServiceRouter(), app.AccountKeeper, groupConfig) - - // IBC Fee Module keeper - app.IBCFeeKeeper = ibcfeekeeper.NewKeeper( - appCodec, keys[ibcfeetypes.StoreKey], - app.IBCKeeper.ChannelKeeper, // may be replaced with IBC middleware - app.IBCKeeper.ChannelKeeper, - &app.IBCKeeper.PortKeeper, app.AccountKeeper, app.BankKeeper, - ) - - // ICA Controller keeper - app.ICAControllerKeeper = icacontrollerkeeper.NewKeeper( - appCodec, keys[icacontrollertypes.StoreKey], app.GetSubspace(icacontrollertypes.SubModuleName), - app.IBCFeeKeeper, // use ics29 fee as ics4Wrapper in middleware stack - app.IBCKeeper.ChannelKeeper, &app.IBCKeeper.PortKeeper, - scopedICAControllerKeeper, app.MsgServiceRouter(), - ) - - // ICA Host keeper - app.ICAHostKeeper = icahostkeeper.NewKeeper( - appCodec, keys[icahosttypes.StoreKey], app.GetSubspace(icahosttypes.SubModuleName), - app.IBCFeeKeeper, // use ics29 fee as ics4Wrapper in middleware stack - app.IBCKeeper.ChannelKeeper, &app.IBCKeeper.PortKeeper, - app.AccountKeeper, scopedICAHostKeeper, app.MsgServiceRouter(), - ) - - // Create IBC Router - ibcRouter := porttypes.NewRouter() - - // Middleware Stacks - - // Create Transfer Keeper and pass IBCFeeKeeper as expected Channel and PortKeeper - // since fee middleware will wrap the IBCKeeper for underlying application. - app.TransferKeeper = ibctransferkeeper.NewKeeper( - appCodec, keys[ibctransfertypes.StoreKey], app.GetSubspace(ibctransfertypes.ModuleName), - app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware - app.IBCKeeper.ChannelKeeper, &app.IBCKeeper.PortKeeper, - app.AccountKeeper, app.BankKeeper, scopedTransferKeeper, - ) - - // Mock Module Stack - - // Mock Module setup for testing IBC and also acts as the interchain accounts authentication module - // NOTE: the IBC mock keeper and application module is used only for testing core IBC. Do - // not replicate if you do not need to test core IBC or light clients. - mockModule := ibcmock.NewAppModule(&app.IBCKeeper.PortKeeper) - - // The mock module is used for testing IBC - mockIBCModule := ibcmock.NewIBCModule(&mockModule, ibcmock.NewIBCApp(ibcmock.ModuleName, scopedIBCMockKeeper)) - ibcRouter.AddRoute(ibcmock.ModuleName, mockIBCModule) - - // Create Transfer Stack - // SendPacket, since it is originating from the application to core IBC: - // transferKeeper.SendPacket -> fee.SendPacket -> channel.SendPacket - - // RecvPacket, message that originates from core IBC and goes down to app, the flow is the other way - // channel.RecvPacket -> fee.OnRecvPacket -> transfer.OnRecvPacket - - // transfer stack contains (from top to bottom): - // - IBC Fee Middleware - // - Transfer - - // create IBC module from bottom to top of stack - var transferStack porttypes.IBCModule - transferStack = transfer.NewIBCModule(app.TransferKeeper) - transferStack = ibcfee.NewIBCMiddleware(transferStack, app.IBCFeeKeeper) - - transfermiddlewareModule := transfermiddleware.NewAppModule(&app.TransferMiddlewarekeeper) - - transfermiddlewareStack := transfermiddleware.NewIBCMiddleware( - transferStack, - app.TransferMiddlewarekeeper, - ) - // Add transfer stack to IBC Router - ibcRouter.AddRoute(ibctransfertypes.ModuleName, transfermiddlewareStack) - - // Create Interchain Accounts Stack - // SendPacket, since it is originating from the application to core IBC: - // icaAuthModuleKeeper.SendTx -> icaController.SendPacket -> fee.SendPacket -> channel.SendPacket - - // initialize ICA module with mock module as the authentication module on the controller side - var icaControllerStack porttypes.IBCModule - icaControllerStack = ibcmock.NewIBCModule(&mockModule, ibcmock.NewIBCApp("", scopedICAMockKeeper)) - app.ICAAuthModule = icaControllerStack.(ibcmock.IBCModule) - icaControllerStack = icacontroller.NewIBCMiddleware(icaControllerStack, app.ICAControllerKeeper) - icaControllerStack = ibcfee.NewIBCMiddleware(icaControllerStack, app.IBCFeeKeeper) - - // RecvPacket, message that originates from core IBC and goes down to app, the flow is: - // channel.RecvPacket -> fee.OnRecvPacket -> icaHost.OnRecvPacket - - var icaHostStack porttypes.IBCModule - icaHostStack = icahost.NewIBCModule(app.ICAHostKeeper) - icaHostStack = ibcfee.NewIBCMiddleware(icaHostStack, app.IBCFeeKeeper) - - // Add host, controller & ica auth modules to IBC router - ibcRouter. - // the ICA Controller middleware needs to be explicitly added to the IBC Router because the - // ICA controller module owns the port capability for ICA. The ICA authentication module - // owns the channel capability. - AddRoute(icacontrollertypes.SubModuleName, icaControllerStack). - AddRoute(icahosttypes.SubModuleName, icaHostStack). - AddRoute(ibcmock.ModuleName+icacontrollertypes.SubModuleName, icaControllerStack) // ica with mock auth module stack route to ica (top level of middleware stack) - - // Create Mock IBC Fee module stack for testing - // SendPacket, since it is originating from the application to core IBC: - // mockModule.SendPacket -> fee.SendPacket -> channel.SendPacket - - // OnRecvPacket, message that originates from core IBC and goes down to app, the flow is the otherway - // channel.RecvPacket -> fee.OnRecvPacket -> mockModule.OnRecvPacket - - // OnAcknowledgementPacket as this is where fee's are paid out - // mockModule.OnAcknowledgementPacket -> fee.OnAcknowledgementPacket -> channel.OnAcknowledgementPacket - - // create fee wrapped mock module - feeMockModule := ibcmock.NewIBCModule(&mockModule, ibcmock.NewIBCApp(MockFeePort, scopedFeeMockKeeper)) - app.FeeMockModule = feeMockModule - feeWithMockModule := ibcfee.NewIBCMiddleware(feeMockModule, app.IBCFeeKeeper) - ibcRouter.AddRoute(MockFeePort, feeWithMockModule) - - // Seal the IBC Router - app.IBCKeeper.SetRouter(ibcRouter) - - // create evidence keeper with router - evidenceKeeper := evidencekeeper.NewKeeper( - appCodec, keys[evidencetypes.StoreKey], app.StakingKeeper, app.SlashingKeeper, - ) - // If evidence needs to be handled for the app, set routes in router here and seal - app.EvidenceKeeper = *evidenceKeeper - - /**** Module Options ****/ - - // NOTE: we may consider parsing `appOpts` inside module constructors. For the moment - // we prefer to be more strict in what arguments the modules expect. - skipGenesisInvariants := cast.ToBool(appOpts.Get(crisis.FlagSkipGenesisInvariants)) - - // NOTE: Any module instantiated in the module manager that is later modified - // must be passed by reference here. - app.mm = module.NewManager( - // SDK app modules - genutil.NewAppModule( - app.AccountKeeper, app.StakingKeeper, app.BaseApp.DeliverTx, - encodingConfig.TxConfig, - ), - auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), - vesting.NewAppModule(app.AccountKeeper, app.BankKeeper), - bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), - capability.NewAppModule(appCodec, *app.CapabilityKeeper, false), - crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), - feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), - gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)), - mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil), - slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName)), - distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)), - staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), - upgrade.NewAppModule(app.UpgradeKeeper), - evidence.NewAppModule(app.EvidenceKeeper), - params.NewAppModule(app.ParamsKeeper), - authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), - groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), - consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), - - // IBC modules - ibc.NewAppModule(app.IBCKeeper), - transfer.NewAppModule(app.TransferKeeper), - ibcfee.NewAppModule(app.IBCFeeKeeper), - ica.NewAppModule(&app.ICAControllerKeeper, &app.ICAHostKeeper), - mockModule, - transfermiddlewareModule, - ) - - // During begin block slashing happens after distr.BeginBlocker so that - // there is nothing left over in the validator fee pool, so as to keep the - // CanWithdrawInvariant invariant. - // NOTE: staking module is required if HistoricalEntries param > 0 - // NOTE: capability module's beginblocker must come before any modules using capabilities (e.g. IBC) - app.mm.SetOrderBeginBlockers( - upgradetypes.ModuleName, capabilitytypes.ModuleName, minttypes.ModuleName, distrtypes.ModuleName, slashingtypes.ModuleName, - evidencetypes.ModuleName, stakingtypes.ModuleName, ibcexported.ModuleName, ibctransfertypes.ModuleName, authtypes.ModuleName, - banktypes.ModuleName, govtypes.ModuleName, crisistypes.ModuleName, genutiltypes.ModuleName, authz.ModuleName, feegrant.ModuleName, - paramstypes.ModuleName, vestingtypes.ModuleName, icatypes.ModuleName, ibcfeetypes.ModuleName, ibcmock.ModuleName, group.ModuleName, consensusparamtypes.ModuleName, - ) - app.mm.SetOrderEndBlockers( - crisistypes.ModuleName, govtypes.ModuleName, stakingtypes.ModuleName, ibcexported.ModuleName, ibctransfertypes.ModuleName, - capabilitytypes.ModuleName, authtypes.ModuleName, banktypes.ModuleName, distrtypes.ModuleName, slashingtypes.ModuleName, - minttypes.ModuleName, genutiltypes.ModuleName, evidencetypes.ModuleName, authz.ModuleName, feegrant.ModuleName, paramstypes.ModuleName, - upgradetypes.ModuleName, vestingtypes.ModuleName, icatypes.ModuleName, ibcfeetypes.ModuleName, ibcmock.ModuleName, group.ModuleName, consensusparamtypes.ModuleName, - ) - - // NOTE: The genutils module must occur after staking so that pools are - // properly initialized with tokens from genesis accounts. - // NOTE: Capability module must occur first so that it can initialize any capabilities - // so that other modules that want to create or claim capabilities afterwards in InitChain - // can do so safely. - app.mm.SetOrderInitGenesis( - capabilitytypes.ModuleName, authtypes.ModuleName, banktypes.ModuleName, distrtypes.ModuleName, stakingtypes.ModuleName, - slashingtypes.ModuleName, govtypes.ModuleName, minttypes.ModuleName, crisistypes.ModuleName, - ibcexported.ModuleName, genutiltypes.ModuleName, evidencetypes.ModuleName, authz.ModuleName, ibctransfertypes.ModuleName, - icatypes.ModuleName, ibcfeetypes.ModuleName, ibcmock.ModuleName, feegrant.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, - vestingtypes.ModuleName, group.ModuleName, consensusparamtypes.ModuleName, - ) - - app.mm.RegisterInvariants(app.CrisisKeeper) - app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) - app.mm.RegisterServices(app.configurator) - - autocliv1.RegisterQueryServer(app.GRPCQueryRouter(), runtimeservices.NewAutoCLIQueryService(app.mm.Modules)) - - reflectionSvc, err := runtimeservices.NewReflectionService() - if err != nil { - panic(err) - } - reflectionv1.RegisterReflectionServiceServer(app.GRPCQueryRouter(), reflectionSvc) - - // add test gRPC service for testing gRPC queries in isolation - testdata.RegisterQueryServer(app.GRPCQueryRouter(), testdata.QueryImpl{}) - - // create the simulation manager and define the order of the modules for deterministic simulations - // - // NOTE: this is not required apps that don't use the simulator for fuzz testing - // transactions - app.sm = module.NewSimulationManager( - auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), - bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), - capability.NewAppModule(appCodec, *app.CapabilityKeeper, false), - feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), - gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)), - staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), - distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)), - slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName)), - params.NewAppModule(app.ParamsKeeper), - evidence.NewAppModule(app.EvidenceKeeper), - authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), - ibc.NewAppModule(app.IBCKeeper), - transfer.NewAppModule(app.TransferKeeper), - ica.NewAppModule(&app.ICAControllerKeeper, &app.ICAHostKeeper), - ) - - app.sm.RegisterStoreDecoders() - - // initialize stores - app.MountKVStores(keys) - app.MountTransientStores(tkeys) - app.MountMemoryStores(memKeys) - - // initialize BaseApp - app.SetInitChainer(app.InitChainer) - app.SetBeginBlocker(app.BeginBlocker) - anteHandler, err := NewAnteHandler( - HandlerOptions{ - HandlerOptions: ante.HandlerOptions{ - AccountKeeper: app.AccountKeeper, - BankKeeper: app.BankKeeper, - SignModeHandler: encodingConfig.TxConfig.SignModeHandler(), - FeegrantKeeper: app.FeeGrantKeeper, - SigGasConsumer: ante.DefaultSigVerificationGasConsumer, - }, - IBCKeeper: app.IBCKeeper, - }, - ) - if err != nil { - panic(err) - } - - app.SetAnteHandler(anteHandler) - - app.SetEndBlocker(app.EndBlocker) - - app.setupUpgradeHandlers() - app.setupUpgradeStoreLoaders() - - if loadLatest { - if err := app.LoadLatestVersion(); err != nil { - tmos.Exit(err.Error()) - } - } - - app.ScopedIBCKeeper = scopedIBCKeeper - app.ScopedTransferKeeper = scopedTransferKeeper - app.ScopedICAControllerKeeper = scopedICAControllerKeeper - app.ScopedICAHostKeeper = scopedICAHostKeeper - - // NOTE: the IBC mock keeper and application module is used only for testing core IBC. Do - // note replicate if you do not need to test core IBC or light clients. - app.ScopedIBCMockKeeper = scopedIBCMockKeeper - app.ScopedICAMockKeeper = scopedICAMockKeeper - app.ScopedFeeMockKeeper = scopedFeeMockKeeper - - return app -} - -// Name returns the name of the App -func (app *SimApp) Name() string { return app.BaseApp.Name() } - -// BeginBlocker application updates every begin block -func (app *SimApp) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock { - return app.mm.BeginBlock(ctx, req) -} - -// EndBlocker application updates every end block -func (app *SimApp) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock { - return app.mm.EndBlock(ctx, req) -} - -// InitChainer application update at chain initialization -func (app *SimApp) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain { - var genesisState GenesisState - if err := json.Unmarshal(req.AppStateBytes, &genesisState); err != nil { - panic(err) - } - app.UpgradeKeeper.SetModuleVersionMap(ctx, app.mm.GetVersionMap()) - return app.mm.InitGenesis(ctx, app.appCodec, genesisState) -} - -// LoadHeight loads a particular height -func (app *SimApp) LoadHeight(height int64) error { - return app.LoadVersion(height) -} - -// ModuleAccountAddrs returns all the app's module account addresses. -func (app *SimApp) ModuleAccountAddrs() map[string]bool { - modAccAddrs := make(map[string]bool) - for acc := range maccPerms { - // do not add the following modules to blocked addresses - // this is only used for testing - if acc == ibcmock.ModuleName { - continue - } - - modAccAddrs[authtypes.NewModuleAddress(acc).String()] = true - } - - return modAccAddrs -} - -// GetModuleManager returns the app module manager -// NOTE: used for testing purposes -func (app *SimApp) GetModuleManager() *module.Manager { - return app.mm -} - -// LegacyAmino returns SimApp's amino codec. -// -// NOTE: This is solely to be used for testing purposes as it may be desirable -// for modules to register their own custom testing types. -func (app *SimApp) LegacyAmino() *codec.LegacyAmino { - return app.legacyAmino -} - -// AppCodec returns SimApp's app codec. -// -// NOTE: This is solely to be used for testing purposes as it may be desirable -// for modules to register their own custom testing types. -func (app *SimApp) AppCodec() codec.Codec { - return app.appCodec -} - -// InterfaceRegistry returns SimApp's InterfaceRegistry -func (app *SimApp) InterfaceRegistry() types.InterfaceRegistry { - return app.interfaceRegistry -} - -// GetKey returns the KVStoreKey for the provided store key. -// -// NOTE: This is solely to be used for testing purposes. -func (app *SimApp) GetKey(storeKey string) *storetypes.KVStoreKey { - return app.keys[storeKey] -} - -// GetTKey returns the TransientStoreKey for the provided store key. -// -// NOTE: This is solely to be used for testing purposes. -func (app *SimApp) GetTKey(storeKey string) *storetypes.TransientStoreKey { - return app.tkeys[storeKey] -} - -// GetMemKey returns the MemStoreKey for the provided mem key. -// -// NOTE: This is solely used for testing purposes. -func (app *SimApp) GetMemKey(storeKey string) *storetypes.MemoryStoreKey { - return app.memKeys[storeKey] -} - -// GetSubspace returns a param subspace for a given module name. -// -// NOTE: This is solely to be used for testing purposes. -func (app *SimApp) GetSubspace(moduleName string) paramstypes.Subspace { - subspace, _ := app.ParamsKeeper.GetSubspace(moduleName) - return subspace -} - -// TestingApp functions - -// GetBaseApp implements the TestingApp interface. -func (app *SimApp) GetBaseApp() *baseapp.BaseApp { - return app.BaseApp -} - -// GetStakingKeeper implements the TestingApp interface. -func (app *SimApp) GetStakingKeeper() ibctestingtypes.StakingKeeper { - return app.StakingKeeper -} - -// GetStakingKeeper implements the TestingApp interface. -func (app *SimApp) GetWasmKeeper() wasm08.Keeper { - return app.Wasm08Keeper -} - -// GetIBCKeeper implements the TestingApp interface. -func (app *SimApp) GetIBCKeeper() *ibckeeper.Keeper { - return app.IBCKeeper -} - -// GetScopedIBCKeeper implements the TestingApp interface. -func (app *SimApp) GetScopedIBCKeeper() capabilitykeeper.ScopedKeeper { - return app.ScopedIBCKeeper -} - -// GetTxConfig implements the TestingApp interface. -func (app *SimApp) GetTxConfig() client.TxConfig { - return app.txConfig -} - -// SimulationManager implements the SimulationApp interface -func (app *SimApp) SimulationManager() *module.SimulationManager { - return app.sm -} - -// RegisterAPIRoutes registers all application module routes with the provided -// API server. -func (app *SimApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConfig) { - clientCtx := apiSvr.ClientCtx - // Register new tx routes from grpc-gateway. - authtx.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) - // Register new tendermint queries routes from grpc-gateway. - tmservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) - - // Register legacy and grpc-gateway routes for all modules. - ModuleBasics.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) - - // Register nodeservice grpc-gateway routes. - nodeservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) - - // register swagger API from root so that other applications can override easily - if apiConfig.Swagger { - RegisterSwaggerAPI(clientCtx, apiSvr.Router) - } -} - -// RegisterTxService implements the Application.RegisterTxService method. -func (app *SimApp) RegisterTxService(clientCtx client.Context) { - authtx.RegisterTxService(app.BaseApp.GRPCQueryRouter(), clientCtx, app.BaseApp.Simulate, app.interfaceRegistry) -} - -// RegisterTendermintService implements the Application.RegisterTendermintService method. -func (app *SimApp) RegisterTendermintService(clientCtx client.Context) { - tmservice.RegisterTendermintService( - clientCtx, - app.BaseApp.GRPCQueryRouter(), - app.interfaceRegistry, - app.Query, - ) -} - -func (app *SimApp) RegisterNodeService(clientCtx client.Context) { - nodeservice.RegisterNodeService(clientCtx, app.GRPCQueryRouter()) -} - -// RegisterSwaggerAPI registers swagger route with API Server -func RegisterSwaggerAPI(_ client.Context, rtr *mux.Router) { - statikFS, err := fs.New() - if err != nil { - panic(err) - } - - staticServer := http.FileServer(statikFS) - rtr.PathPrefix("/swagger/").Handler(http.StripPrefix("/swagger/", staticServer)) -} - -// GetMaccPerms returns a copy of the module account permissions -func GetMaccPerms() map[string][]string { - dupMaccPerms := make(map[string][]string) - for k, v := range maccPerms { - dupMaccPerms[k] = v - } - return dupMaccPerms -} - -// ModuleAccountAddrsLegacy returns all the app's module account addresses. -func ModuleAccountAddrsLegacy() map[string]bool { - modAccAddrs := make(map[string]bool) - for acc := range GetMaccPerms() { - modAccAddrs[authtypes.NewModuleAddress(acc).String()] = true - } - - return modAccAddrs -} - -func BlockedAddresses() map[string]bool { - modAccAddrs := ModuleAccountAddrsLegacy() - - // allow the following addresses to receive funds - delete(modAccAddrs, authtypes.NewModuleAddress(govtypes.ModuleName).String()) - delete(modAccAddrs, authtypes.NewModuleAddress(ibcmock.ModuleName).String()) - - return modAccAddrs -} - -// initParamsKeeper init params keeper and its subspaces -func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey storetypes.StoreKey) paramskeeper.Keeper { - paramsKeeper := paramskeeper.NewKeeper(appCodec, legacyAmino, key, tkey) - - paramsKeeper.Subspace(authtypes.ModuleName) - paramsKeeper.Subspace(banktypes.ModuleName) - paramsKeeper.Subspace(stakingtypes.ModuleName).WithKeyTable(stakingtypes.ParamKeyTable()) - paramsKeeper.Subspace(minttypes.ModuleName).WithKeyTable(minttypes.ParamKeyTable()) - paramsKeeper.Subspace(distrtypes.ModuleName) - paramsKeeper.Subspace(slashingtypes.ModuleName) - paramsKeeper.Subspace(govtypes.ModuleName) - paramsKeeper.Subspace(crisistypes.ModuleName) - paramsKeeper.Subspace(ibctransfertypes.ModuleName) - paramsKeeper.Subspace(ibcexported.ModuleName) - paramsKeeper.Subspace(icacontrollertypes.SubModuleName) - paramsKeeper.Subspace(icahosttypes.SubModuleName) - - return paramsKeeper -} - -// setupUpgradeHandlers sets all necessary upgrade handlers for testing purposes -func (app *SimApp) setupUpgradeHandlers() { - app.UpgradeKeeper.SetUpgradeHandler( - simappupgrades.DefaultUpgradeName, - simappupgrades.CreateDefaultUpgradeHandler(app.mm, app.configurator), - ) - - // NOTE: The moduleName arg of v6.CreateUpgradeHandler refers to the auth module ScopedKeeper name to which the channel capability should be migrated from. - // This should be the same string value provided upon instantiation of the ScopedKeeper with app.CapabilityKeeper.ScopeToModule() - // TODO: update git tag in link below - // See: https://github.com/cosmos/ibc-go/blob/v5.0.0-rc2/testing/simapp/app.go#L304 - app.UpgradeKeeper.SetUpgradeHandler( - v6.UpgradeName, - v6.CreateUpgradeHandler( - app.mm, - app.configurator, - app.appCodec, - app.keys[capabilitytypes.ModuleName], - app.CapabilityKeeper, - ibcmock.ModuleName+icacontrollertypes.SubModuleName, - ), - ) - - app.UpgradeKeeper.SetUpgradeHandler( - v7.UpgradeName, - v7.CreateUpgradeHandler( - app.mm, - app.configurator, - app.appCodec, - app.IBCKeeper.ClientKeeper, - app.ConsensusParamsKeeper, - app.ParamsKeeper, - ), - ) -} - -// setupUpgradeStoreLoaders sets all necessary store loaders required by upgrades. -func (app *SimApp) setupUpgradeStoreLoaders() { - upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk() - if err != nil { - tmos.Exit(fmt.Sprintf("failed to read upgrade info from disk %s", err)) - } - - if upgradeInfo.Name == v7.UpgradeName && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) { - storeUpgrades := storetypes.StoreUpgrades{ - Added: []string{ - consensusparamtypes.StoreKey, - crisistypes.StoreKey, - }, - } - - // configure store loader that checks if version == upgradeHeight and applies store upgrades - app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades)) - } -} diff --git a/app/ibctesting/simapp/config.go b/app/ibctesting/simapp/config.go deleted file mode 100644 index 98df982bd..000000000 --- a/app/ibctesting/simapp/config.go +++ /dev/null @@ -1,75 +0,0 @@ -package simapp - -import ( - "flag" - - "github.com/cosmos/cosmos-sdk/types/simulation" -) - -// List of available flags for the simulator -var ( - FlagGenesisFileValue string - FlagParamsFileValue string - FlagExportParamsPathValue string - FlagExportParamsHeightValue int - FlagExportStatePathValue string - FlagExportStatsPathValue string - FlagSeedValue int64 - FlagInitialBlockHeightValue int - FlagNumBlocksValue int - FlagBlockSizeValue int - FlagLeanValue bool - FlagCommitValue bool - FlagOnOperationValue bool // TODO: Remove in favor of binary search for invariant violation - FlagAllInvariantsValue bool - - FlagEnabledValue bool - FlagVerboseValue bool - FlagPeriodValue uint - FlagGenesisTimeValue int64 -) - -// GetSimulatorFlags gets the values of all the available simulation flags -func GetSimulatorFlags() { - // config fields - flag.StringVar(&FlagGenesisFileValue, "Genesis", "", "custom simulation genesis file; cannot be used with params file") - flag.StringVar(&FlagParamsFileValue, "Params", "", "custom simulation params file which overrides any random params; cannot be used with genesis") - flag.StringVar(&FlagExportParamsPathValue, "ExportParamsPath", "", "custom file path to save the exported params JSON") - flag.IntVar(&FlagExportParamsHeightValue, "ExportParamsHeight", 0, "height to which export the randomly generated params") - flag.StringVar(&FlagExportStatePathValue, "ExportStatePath", "", "custom file path to save the exported app state JSON") - flag.StringVar(&FlagExportStatsPathValue, "ExportStatsPath", "", "custom file path to save the exported simulation statistics JSON") - flag.Int64Var(&FlagSeedValue, "Seed", 42, "simulation random seed") - flag.IntVar(&FlagInitialBlockHeightValue, "InitialBlockHeight", 1, "initial block to start the simulation") - flag.IntVar(&FlagNumBlocksValue, "NumBlocks", 500, "number of new blocks to simulate from the initial block height") - flag.IntVar(&FlagBlockSizeValue, "BlockSize", 200, "operations per block") - flag.BoolVar(&FlagLeanValue, "Lean", false, "lean simulation log output") - flag.BoolVar(&FlagCommitValue, "Commit", false, "have the simulation commit") - flag.BoolVar(&FlagOnOperationValue, "SimulateEveryOperation", false, "run slow invariants every operation") - flag.BoolVar(&FlagAllInvariantsValue, "PrintAllInvariants", false, "print all invariants if a broken invariant is found") - - // simulation flags - flag.BoolVar(&FlagEnabledValue, "Enabled", false, "enable the simulation") - flag.BoolVar(&FlagVerboseValue, "Verbose", false, "verbose log output") - flag.UintVar(&FlagPeriodValue, "Period", 0, "run slow invariants only once every period assertions") - flag.Int64Var(&FlagGenesisTimeValue, "GenesisTime", 0, "override genesis UNIX time instead of using a random UNIX time") -} - -// NewConfigFromFlags creates a simulation from the retrieved values of the flags. -func NewConfigFromFlags() simulation.Config { - return simulation.Config{ - GenesisFile: FlagGenesisFileValue, - ParamsFile: FlagParamsFileValue, - ExportParamsPath: FlagExportParamsPathValue, - ExportParamsHeight: FlagExportParamsHeightValue, - ExportStatePath: FlagExportStatePathValue, - ExportStatsPath: FlagExportStatsPathValue, - Seed: FlagSeedValue, - InitialBlockHeight: FlagInitialBlockHeightValue, - NumBlocks: FlagNumBlocksValue, - BlockSize: FlagBlockSizeValue, - Lean: FlagLeanValue, - Commit: FlagCommitValue, - OnOperation: FlagOnOperationValue, - AllInvariants: FlagAllInvariantsValue, - } -} diff --git a/app/ibctesting/simapp/encoding.go b/app/ibctesting/simapp/encoding.go deleted file mode 100644 index 53ee98f0e..000000000 --- a/app/ibctesting/simapp/encoding.go +++ /dev/null @@ -1,20 +0,0 @@ -package simapp - -import ( - "github.com/cosmos/cosmos-sdk/std" - - simappparams "github.com/notional-labs/composable/v6/app/ibctesting/simapp/params" -) - -// MakeTestEncodingConfig creates an EncodingConfig for testing. This function -// should be used only in tests or when creating a new app instance (NewApp*()). -// App user shouldn't create new codecs - use the app.AppCodec instead. -// [DEPRECATED] -func MakeTestEncodingConfig() simappparams.EncodingConfig { - encodingConfig := simappparams.MakeTestEncodingConfig() - std.RegisterLegacyAminoCodec(encodingConfig.Amino) - std.RegisterInterfaces(encodingConfig.InterfaceRegistry) - ModuleBasics.RegisterLegacyAminoCodec(encodingConfig.Amino) - ModuleBasics.RegisterInterfaces(encodingConfig.InterfaceRegistry) - return encodingConfig -} diff --git a/app/ibctesting/simapp/export.go b/app/ibctesting/simapp/export.go deleted file mode 100644 index 8515cc0f4..000000000 --- a/app/ibctesting/simapp/export.go +++ /dev/null @@ -1,198 +0,0 @@ -package simapp - -import ( - "encoding/json" - "log" - - tmproto "github.com/cometbft/cometbft/proto/tendermint/types" - servertypes "github.com/cosmos/cosmos-sdk/server/types" - sdk "github.com/cosmos/cosmos-sdk/types" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - "github.com/cosmos/cosmos-sdk/x/staking" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" -) - -// ExportAppStateAndValidators exports the state of the application for a genesis -// file. -func (app *SimApp) ExportAppStateAndValidators( - forZeroHeight bool, jailAllowedAddrs []string, -) (servertypes.ExportedApp, error) { - // as if they could withdraw from the start of the next block - ctx := app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()}) - - // We export at last height + 1, because that's the height at which - // Tendermint will start InitChain. - height := app.LastBlockHeight() + 1 - if forZeroHeight { - height = 0 - app.prepForZeroHeightGenesis(ctx, jailAllowedAddrs) - } - - genState := app.mm.ExportGenesis(ctx, app.appCodec) - appState, err := json.MarshalIndent(genState, "", " ") - if err != nil { - return servertypes.ExportedApp{}, err - } - - validators, err := staking.WriteValidators(ctx, app.StakingKeeper) - return servertypes.ExportedApp{ - AppState: appState, - Validators: validators, - Height: height, - ConsensusParams: app.BaseApp.GetConsensusParams(ctx), - }, err -} - -// prepare for fresh start at zero height -// NOTE zero height genesis is a temporary feature which will be deprecated -// in favour of export at a block height -func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) { - applyAllowedAddrs := false - - // check if there is a allowed address list - if len(jailAllowedAddrs) > 0 { - applyAllowedAddrs = true - } - - allowedAddrsMap := make(map[string]bool) - - for _, addr := range jailAllowedAddrs { - _, err := sdk.ValAddressFromBech32(addr) - if err != nil { - log.Fatal(err) - } - allowedAddrsMap[addr] = true - } - - /* Just to be safe, assert the invariants on current state. */ - app.CrisisKeeper.AssertInvariants(ctx) - - /* Handle fee distribution state. */ - - // withdraw all validator commission - app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { - _, _ = app.DistrKeeper.WithdrawValidatorCommission(ctx, val.GetOperator()) - return false - }) - - // withdraw all delegator rewards - dels := app.StakingKeeper.GetAllDelegations(ctx) - for _, delegation := range dels { - valAddr, err := sdk.ValAddressFromBech32(delegation.ValidatorAddress) - if err != nil { - panic(err) - } - - delAddr, err := sdk.AccAddressFromBech32(delegation.DelegatorAddress) - if err != nil { - panic(err) - } - _, _ = app.DistrKeeper.WithdrawDelegationRewards(ctx, delAddr, valAddr) - } - - // clear validator slash events - app.DistrKeeper.DeleteAllValidatorSlashEvents(ctx) - - // clear validator historical rewards - app.DistrKeeper.DeleteAllValidatorHistoricalRewards(ctx) - - // set context height to zero - height := ctx.BlockHeight() - ctx = ctx.WithBlockHeight(0) - - // reinitialize all validators - app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { - // donate any unwithdrawn outstanding reward fraction tokens to the community pool - scraps := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, val.GetOperator()) - feePool := app.DistrKeeper.GetFeePool(ctx) - feePool.CommunityPool = feePool.CommunityPool.Add(scraps...) - app.DistrKeeper.SetFeePool(ctx, feePool) - - err := app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, val.GetOperator()) - return err != nil - }) - - // reinitialize all delegations - for _, del := range dels { - valAddr, err := sdk.ValAddressFromBech32(del.ValidatorAddress) - if err != nil { - panic(err) - } - delAddr, err := sdk.AccAddressFromBech32(del.DelegatorAddress) - if err != nil { - panic(err) - } - err = app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr) - if err != nil { - panic(err) - } - err = app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr) - if err != nil { - panic(err) - } - } - - // reset context height - ctx = ctx.WithBlockHeight(height) - - /* Handle staking state. */ - - // iterate through redelegations, reset creation height - app.StakingKeeper.IterateRedelegations(ctx, func(_ int64, red stakingtypes.Redelegation) (stop bool) { - for i := range red.Entries { - red.Entries[i].CreationHeight = 0 - } - app.StakingKeeper.SetRedelegation(ctx, red) - return false - }) - - // iterate through unbonding delegations, reset creation height - app.StakingKeeper.IterateUnbondingDelegations(ctx, func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) { - for i := range ubd.Entries { - ubd.Entries[i].CreationHeight = 0 - } - app.StakingKeeper.SetUnbondingDelegation(ctx, ubd) - return false - }) - - // Iterate through validators by power descending, reset bond heights, and - // update bond intra-tx counters. - store := ctx.KVStore(app.keys[stakingtypes.StoreKey]) - iter := sdk.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey) - counter := int16(0) - - for ; iter.Valid(); iter.Next() { - addr := sdk.ValAddress(stakingtypes.AddressFromValidatorsKey(iter.Key())) - validator, found := app.StakingKeeper.GetValidator(ctx, addr) - if !found { - panic("expected validator, not found") - } - - validator.UnbondingHeight = 0 - if applyAllowedAddrs && !allowedAddrsMap[addr.String()] { - validator.Jailed = true - } - - app.StakingKeeper.SetValidator(ctx, validator) - counter++ - } - - iter.Close() - - _, err := app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) - if err != nil { - log.Fatal(err) - } - - /* Handle slashing state. */ - - // reset start height on signing infos - app.SlashingKeeper.IterateValidatorSigningInfos( - ctx, - func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool) { - info.StartHeight = 0 - app.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info) - return false - }, - ) -} diff --git a/app/ibctesting/simapp/genesis.go b/app/ibctesting/simapp/genesis.go deleted file mode 100644 index 772e452d4..000000000 --- a/app/ibctesting/simapp/genesis.go +++ /dev/null @@ -1,21 +0,0 @@ -package simapp - -import ( - "encoding/json" - - "github.com/cosmos/cosmos-sdk/codec" -) - -// The genesis state of the blockchain is represented here as a map of raw json -// messages key'd by a identifier string. -// The identifier is used to determine which module genesis information belongs -// to so it may be appropriately routed during init chain. -// Within this application default genesis information is retrieved from -// the ModuleBasicManager which populates json from each BasicModule -// object provided to it during init. -type GenesisState map[string]json.RawMessage - -// NewDefaultGenesisState generates the default state for the application. -func NewDefaultGenesisState(cdc codec.JSONCodec) GenesisState { - return ModuleBasics.DefaultGenesis(cdc) -} diff --git a/app/ibctesting/simapp/genesis_account.go b/app/ibctesting/simapp/genesis_account.go deleted file mode 100644 index 5c9c7f9a0..000000000 --- a/app/ibctesting/simapp/genesis_account.go +++ /dev/null @@ -1,47 +0,0 @@ -package simapp - -import ( - "errors" - - sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" -) - -var _ authtypes.GenesisAccount = (*SimGenesisAccount)(nil) - -// SimGenesisAccount defines a type that implements the GenesisAccount interface -// to be used for simulation accounts in the genesis state. -type SimGenesisAccount struct { - *authtypes.BaseAccount - - // vesting account fields - OriginalVesting sdk.Coins `json:"original_vesting" yaml:"original_vesting"` // total vesting coins upon initialization - DelegatedFree sdk.Coins `json:"delegated_free" yaml:"delegated_free"` // delegated vested coins at time of delegation - DelegatedVesting sdk.Coins `json:"delegated_vesting" yaml:"delegated_vesting"` // delegated vesting coins at time of delegation - StartTime int64 `json:"start_time" yaml:"start_time"` // vesting start time (UNIX Epoch time) - EndTime int64 `json:"end_time" yaml:"end_time"` // vesting end time (UNIX Epoch time) - - // module account fields - ModuleName string `json:"module_name" yaml:"module_name"` // name of the module account - ModulePermissions []string `json:"module_permissions" yaml:"module_permissions"` // permissions of module account -} - -// Validate checks for errors on the vesting and module account parameters -func (sga SimGenesisAccount) Validate() error { - if !sga.OriginalVesting.IsZero() { - if sga.StartTime >= sga.EndTime { - return errors.New("vesting start-time cannot be before end-time") - } - } - - if sga.ModuleName != "" { - ma := authtypes.ModuleAccount{ - BaseAccount: sga.BaseAccount, Name: sga.ModuleName, Permissions: sga.ModulePermissions, - } - if err := ma.Validate(); err != nil { - return err - } - } - - return sga.BaseAccount.Validate() -} diff --git a/app/ibctesting/simapp/genesis_account_test.go b/app/ibctesting/simapp/genesis_account_test.go deleted file mode 100644 index be7675536..000000000 --- a/app/ibctesting/simapp/genesis_account_test.go +++ /dev/null @@ -1,88 +0,0 @@ -package simapp_test - -import ( - "testing" - "time" - - "github.com/cometbft/cometbft/crypto" - "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/stretchr/testify/require" - - "github.com/cosmos/ibc-go/v7/testing/simapp" -) - -func TestSimGenesisAccountValidate(t *testing.T) { - pubkey := secp256k1.GenPrivKey().PubKey() - addr := sdk.AccAddress(pubkey.Address()) - - vestingStart := time.Now().UTC() - - coins := sdk.NewCoins(sdk.NewInt64Coin("test", 1000)) - baseAcc := authtypes.NewBaseAccount(addr, pubkey, 0, 0) - - testCases := []struct { - name string - sga simapp.SimGenesisAccount - wantErr bool - }{ - { - "valid basic account", - simapp.SimGenesisAccount{ - BaseAccount: baseAcc, - }, - false, - }, - { - "invalid basic account with mismatching address/pubkey", - simapp.SimGenesisAccount{ - BaseAccount: authtypes.NewBaseAccount(addr, secp256k1.GenPrivKey().PubKey(), 0, 0), - }, - true, - }, - { - "valid basic account with module name", - simapp.SimGenesisAccount{ - BaseAccount: authtypes.NewBaseAccount(sdk.AccAddress(crypto.AddressHash([]byte("testmod"))), nil, 0, 0), - ModuleName: "testmod", - }, - false, - }, - { - "valid basic account with invalid module name/pubkey pair", - simapp.SimGenesisAccount{ - BaseAccount: baseAcc, - ModuleName: "testmod", - }, - true, - }, - { - "valid basic account with valid vesting attributes", - simapp.SimGenesisAccount{ - BaseAccount: baseAcc, - OriginalVesting: coins, - StartTime: vestingStart.Unix(), - EndTime: vestingStart.Add(1 * time.Hour).Unix(), - }, - false, - }, - { - "valid basic account with invalid vesting end time", - simapp.SimGenesisAccount{ - BaseAccount: baseAcc, - OriginalVesting: coins, - StartTime: vestingStart.Add(2 * time.Hour).Unix(), - EndTime: vestingStart.Add(1 * time.Hour).Unix(), - }, - true, - }, - } - - for _, tc := range testCases { - tc := tc - t.Run(tc.name, func(t *testing.T) { - require.Equal(t, tc.wantErr, tc.sga.Validate() != nil) - }) - } -} diff --git a/app/ibctesting/simapp/params/amino.go b/app/ibctesting/simapp/params/amino.go deleted file mode 100644 index d603987dd..000000000 --- a/app/ibctesting/simapp/params/amino.go +++ /dev/null @@ -1,27 +0,0 @@ -//go:build test_amino -// +build test_amino - -package params - -import ( - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" -) - -// MakeTestEncodingConfig creates an EncodingConfig for an amino based test configuration. -// This function should be used only internally (in the SDK). -// App user should'nt create new codecs - use the app.AppCodec instead. -// [DEPRECATED] -func MakeTestEncodingConfig() EncodingConfig { - cdc := codec.NewLegacyAmino() - interfaceRegistry := types.NewInterfaceRegistry() - marshaler := codec.NewAminoCodec(cdc) - - return EncodingConfig{ - InterfaceRegistry: interfaceRegistry, - Marshaler: marshaler, - TxConfig: legacytx.StdTxConfig{Cdc: cdc}, - Amino: cdc, - } -} diff --git a/app/ibctesting/simapp/params/doc.go b/app/ibctesting/simapp/params/doc.go deleted file mode 100644 index 1c721342a..000000000 --- a/app/ibctesting/simapp/params/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -/* -Package params defines the simulation parameters in the simapp. - -It contains the default weights used for each transaction used on the module's -simulation. These weights define the chance for a transaction to be simulated at -any gived operation. - -You can repace the default values for the weights by providing a params.json -file with the weights defined for each of the transaction operations: - - { - "op_weight_msg_send": 60, - "op_weight_msg_delegate": 100, - } - -In the example above, the `MsgSend` has 60% chance to be simulated, while the -`MsgDelegate` will always be simulated. -*/ -package params diff --git a/app/ibctesting/simapp/params/encoding.go b/app/ibctesting/simapp/params/encoding.go deleted file mode 100644 index 3d634abf1..000000000 --- a/app/ibctesting/simapp/params/encoding.go +++ /dev/null @@ -1,16 +0,0 @@ -package params - -import ( - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/codec/types" -) - -// EncodingConfig specifies the concrete encoding types to use for a given app. -// This is provided for compatibility between protobuf and amino implementations. -type EncodingConfig struct { - InterfaceRegistry types.InterfaceRegistry - Marshaler codec.Codec - TxConfig client.TxConfig - Amino *codec.LegacyAmino -} diff --git a/app/ibctesting/simapp/params/params.go b/app/ibctesting/simapp/params/params.go deleted file mode 100644 index b6aa5fb55..000000000 --- a/app/ibctesting/simapp/params/params.go +++ /dev/null @@ -1,7 +0,0 @@ -package params - -// Simulation parameter constants -const ( - StakePerAccount = "stake_per_account" - InitiallyBondedValidators = "initially_bonded_validators" -) diff --git a/app/ibctesting/simapp/params/proto.go b/app/ibctesting/simapp/params/proto.go deleted file mode 100644 index a752d1079..000000000 --- a/app/ibctesting/simapp/params/proto.go +++ /dev/null @@ -1,27 +0,0 @@ -//go:build !test_amino -// +build !test_amino - -package params - -import ( - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/x/auth/tx" -) - -// MakeTestEncodingConfig creates an EncodingConfig for a non-amino based test configuration. -// This function should be used only internally (in the SDK). -// App user should'nt create new codecs - use the app.AppCodec instead. -// [DEPRECATED] -func MakeTestEncodingConfig() EncodingConfig { - cdc := codec.NewLegacyAmino() - interfaceRegistry := types.NewInterfaceRegistry() - marshaler := codec.NewProtoCodec(interfaceRegistry) - - return EncodingConfig{ - InterfaceRegistry: interfaceRegistry, - Marshaler: marshaler, - TxConfig: tx.NewTxConfig(marshaler, tx.DefaultSignModes), - Amino: cdc, - } -} diff --git a/app/ibctesting/simapp/params/weights.go b/app/ibctesting/simapp/params/weights.go deleted file mode 100644 index 81400a2fc..000000000 --- a/app/ibctesting/simapp/params/weights.go +++ /dev/null @@ -1,28 +0,0 @@ -package params - -// Default simulation operation weights for messages and gov proposals -const ( - DefaultWeightMsgSend int = 100 - DefaultWeightMsgMultiSend int = 10 - DefaultWeightMsgSetWithdrawAddress int = 50 - DefaultWeightMsgWithdrawDelegationReward int = 50 - DefaultWeightMsgWithdrawValidatorCommission int = 50 - DefaultWeightMsgFundCommunityPool int = 50 - DefaultWeightMsgDeposit int = 100 - DefaultWeightMsgVote int = 67 - DefaultWeightMsgVoteWeighted int = 33 - DefaultWeightMsgUnjail int = 100 - DefaultWeightMsgCreateValidator int = 100 - DefaultWeightMsgEditValidator int = 5 - DefaultWeightMsgDelegate int = 100 - DefaultWeightMsgUndelegate int = 100 - DefaultWeightMsgBeginRedelegate int = 100 - - DefaultWeightCommunitySpendProposal int = 5 - DefaultWeightTextProposal int = 5 - DefaultWeightParamChangeProposal int = 5 - - // feegrant - DefaultWeightGrantFeeAllowance int = 100 - DefaultWeightRevokeFeeAllowance int = 100 -) diff --git a/app/ibctesting/simapp/sim_bench_test.go b/app/ibctesting/simapp/sim_bench_test.go deleted file mode 100644 index d3689d353..000000000 --- a/app/ibctesting/simapp/sim_bench_test.go +++ /dev/null @@ -1,122 +0,0 @@ -package simapp - -import ( - "fmt" - "os" - "testing" - - tmproto "github.com/cometbft/cometbft/proto/tendermint/types" - simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/cosmos/cosmos-sdk/x/simulation" -) - -// Profile with: -// /usr/local/go/bin/go test -benchmem -run=^$ github.com/cosmos/ibc-go/v7/testing/simapp -bench ^BenchmarkFullAppSimulation$ -Commit=true -cpuprofile cpu.out -func BenchmarkFullAppSimulation(b *testing.B) { - b.ReportAllocs() - config, db, dir, logger, _, err := SetupSimulation("goleveldb-app-sim", "Simulation") - if err != nil { - b.Fatalf("simulation setup failed: %s", err.Error()) - } - - defer func() { - db.Close() - err = os.RemoveAll(dir) - if err != nil { - b.Fatal(err) - } - }() - - app := NewSimApp(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, FlagPeriodValue, MakeTestEncodingConfig(), simtestutil.EmptyAppOptions{}, interBlockCacheOpt()) - - // run randomized simulation - _, simParams, simErr := simulation.SimulateFromSeed( - b, - os.Stdout, - app.BaseApp, - AppStateFn(app.AppCodec(), app.SimulationManager()), - simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - SimulationOperations(app, app.AppCodec(), config), - app.ModuleAccountAddrs(), - config, - app.AppCodec(), - ) - - // export state and simParams before the simulation error is checked - if err = CheckExportSimulation(app, config, simParams); err != nil { - b.Fatal(err) - } - - if simErr != nil { - b.Fatal(simErr) - } - - if config.Commit { - PrintStats(db) - } -} - -func BenchmarkInvariants(b *testing.B) { - b.ReportAllocs() - config, db, dir, logger, _, err := SetupSimulation("leveldb-app-invariant-bench", "Simulation") - if err != nil { - b.Fatalf("simulation setup failed: %s", err.Error()) - } - - config.AllInvariants = false - - defer func() { - db.Close() - err = os.RemoveAll(dir) - if err != nil { - b.Fatal(err) - } - }() - - app := NewSimApp(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, FlagPeriodValue, MakeTestEncodingConfig(), simtestutil.EmptyAppOptions{}, interBlockCacheOpt()) - - // run randomized simulation - _, simParams, simErr := simulation.SimulateFromSeed( - b, - os.Stdout, - app.BaseApp, - AppStateFn(app.AppCodec(), app.SimulationManager()), - simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - SimulationOperations(app, app.AppCodec(), config), - app.ModuleAccountAddrs(), - config, - app.AppCodec(), - ) - - // export state and simParams before the simulation error is checked - if err = CheckExportSimulation(app, config, simParams); err != nil { - b.Fatal(err) - } - - if simErr != nil { - b.Fatal(simErr) - } - - if config.Commit { - PrintStats(db) - } - - ctx := app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight() + 1}) - - // 3. Benchmark each invariant separately - // - // NOTE: We use the crisis keeper as it has all the invariants registered with - // their respective metadata which makes it useful for testing/benchmarking. - for _, cr := range app.CrisisKeeper.Routes() { - cr := cr - b.Run(fmt.Sprintf("%s/%s", cr.ModuleName, cr.Route), func(b *testing.B) { - if res, stop := cr.Invar(ctx); stop { - b.Fatalf( - "broken invariant at block %d of %d\n%s", - ctx.BlockHeight()-1, config.NumBlocks, res, - ) - } - }) - } -} diff --git a/app/ibctesting/simapp/sim_test.go b/app/ibctesting/simapp/sim_test.go deleted file mode 100644 index 32d602b0c..000000000 --- a/app/ibctesting/simapp/sim_test.go +++ /dev/null @@ -1,343 +0,0 @@ -package simapp - -import ( - "encoding/json" - "fmt" - "math/rand" - "os" - "testing" - - dbm "github.com/cometbft/cometbft-db" - abci "github.com/cometbft/cometbft/abci/types" - "github.com/cometbft/cometbft/libs/log" - tmproto "github.com/cometbft/cometbft/proto/tendermint/types" - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/store" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" - distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/cosmos/cosmos-sdk/x/simulation" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/stretchr/testify/require" - - minttypes "github.com/notional-labs/composable/v6/x/mint/types" - - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" -) - -// Get flags every time the simulator is run -func init() { - GetSimulatorFlags() -} - -type StoreKeysPrefixes struct { - A storetypes.StoreKey - B storetypes.StoreKey - Prefixes [][]byte -} - -// fauxMerkleModeOpt returns a BaseApp option to use a dbStoreAdapter instead of -// an IAVLStore for faster simulation speed. -func fauxMerkleModeOpt(bapp *baseapp.BaseApp) { - bapp.SetFauxMerkleMode() -} - -// interBlockCacheOpt returns a BaseApp option function that sets the persistent -// inter-block write-through cache. -func interBlockCacheOpt() func(*baseapp.BaseApp) { - return baseapp.SetInterBlockCache(store.NewCommitKVStoreCacheManager()) -} - -func TestFullAppSimulation(t *testing.T) { - config, db, dir, logger, skip, err := SetupSimulation("leveldb-app-sim", "Simulation") - if skip { - t.Skip("skipping application simulation") - } - require.NoError(t, err, "simulation setup failed") - - defer func() { - db.Close() - require.NoError(t, os.RemoveAll(dir)) - }() - - app := NewSimApp(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, FlagPeriodValue, MakeTestEncodingConfig(), simtestutil.EmptyAppOptions{}, fauxMerkleModeOpt) - require.Equal(t, "SimApp", app.Name()) - - // run randomized simulation - _, simParams, simErr := simulation.SimulateFromSeed( - t, - os.Stdout, - app.BaseApp, - AppStateFn(app.AppCodec(), app.SimulationManager()), - simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - SimulationOperations(app, app.AppCodec(), config), - app.ModuleAccountAddrs(), - config, - app.AppCodec(), - ) - - // export state and simParams before the simulation error is checked - err = CheckExportSimulation(app, config, simParams) - require.NoError(t, err) - require.NoError(t, simErr) - - if config.Commit { - PrintStats(db) - } -} - -func TestAppImportExport(t *testing.T) { - config, db, dir, logger, skip, err := SetupSimulation("leveldb-app-sim", "Simulation") - if skip { - t.Skip("skipping application import/export simulation") - } - require.NoError(t, err, "simulation setup failed") - - defer func() { - db.Close() - require.NoError(t, os.RemoveAll(dir)) - }() - - app := NewSimApp(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, FlagPeriodValue, MakeTestEncodingConfig(), simtestutil.EmptyAppOptions{}, fauxMerkleModeOpt) - require.Equal(t, "SimApp", app.Name()) - - // Run randomized simulation - _, simParams, simErr := simulation.SimulateFromSeed( - t, - os.Stdout, - app.BaseApp, - AppStateFn(app.AppCodec(), app.SimulationManager()), - simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - SimulationOperations(app, app.AppCodec(), config), - app.ModuleAccountAddrs(), - config, - app.AppCodec(), - ) - - // export state and simParams before the simulation error is checked - err = CheckExportSimulation(app, config, simParams) - require.NoError(t, err) - require.NoError(t, simErr) - - if config.Commit { - PrintStats(db) - } - - fmt.Printf("exporting genesis...\n") - - exported, err := app.ExportAppStateAndValidators(false, []string{}) - require.NoError(t, err) - - fmt.Printf("importing genesis...\n") - - _, newDB, newDir, _, _, err := SetupSimulation("leveldb-app-sim-2", "Simulation-2") - require.NoError(t, err, "simulation setup failed") - - defer func() { - newDB.Close() - require.NoError(t, os.RemoveAll(newDir)) - }() - - newApp := NewSimApp(log.NewNopLogger(), newDB, nil, true, map[int64]bool{}, DefaultNodeHome, FlagPeriodValue, MakeTestEncodingConfig(), simtestutil.EmptyAppOptions{}, fauxMerkleModeOpt) - require.Equal(t, "SimApp", newApp.Name()) - - var genesisState GenesisState - err = json.Unmarshal(exported.AppState, &genesisState) - require.NoError(t, err) - - ctxA := app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()}) - ctxB := newApp.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()}) - newApp.mm.InitGenesis(ctxB, app.AppCodec(), genesisState) - newApp.StoreConsensusParams(ctxB, exported.ConsensusParams) - - fmt.Printf("comparing stores...\n") - - storeKeysPrefixes := []StoreKeysPrefixes{ - {app.keys[authtypes.StoreKey], newApp.keys[authtypes.StoreKey], [][]byte{}}, - { - app.keys[stakingtypes.StoreKey], newApp.keys[stakingtypes.StoreKey], - [][]byte{ - stakingtypes.UnbondingQueueKey, stakingtypes.RedelegationQueueKey, stakingtypes.ValidatorQueueKey, - stakingtypes.HistoricalInfoKey, - }, - }, // ordering may change but it doesn't matter - {app.keys[slashingtypes.StoreKey], newApp.keys[slashingtypes.StoreKey], [][]byte{}}, - {app.keys[minttypes.StoreKey], newApp.keys[minttypes.StoreKey], [][]byte{}}, - {app.keys[distrtypes.StoreKey], newApp.keys[distrtypes.StoreKey], [][]byte{}}, - {app.keys[banktypes.StoreKey], newApp.keys[banktypes.StoreKey], [][]byte{banktypes.BalancesPrefix}}, - {app.keys[paramtypes.StoreKey], newApp.keys[paramtypes.StoreKey], [][]byte{}}, - {app.keys[govtypes.StoreKey], newApp.keys[govtypes.StoreKey], [][]byte{}}, - {app.keys[evidencetypes.StoreKey], newApp.keys[evidencetypes.StoreKey], [][]byte{}}, - {app.keys[capabilitytypes.StoreKey], newApp.keys[capabilitytypes.StoreKey], [][]byte{}}, - {app.keys[ibcexported.StoreKey], newApp.keys[ibcexported.StoreKey], [][]byte{}}, - {app.keys[ibctransfertypes.StoreKey], newApp.keys[ibctransfertypes.StoreKey], [][]byte{}}, - {app.keys[authzkeeper.StoreKey], newApp.keys[authzkeeper.StoreKey], [][]byte{}}, - } - - for _, skp := range storeKeysPrefixes { - storeA := ctxA.KVStore(skp.A) - storeB := ctxB.KVStore(skp.B) - - failedKVAs, failedKVBs := sdk.DiffKVStores(storeA, storeB, skp.Prefixes) - require.Equal(t, len(failedKVAs), len(failedKVBs), "unequal sets of key-values to compare") - - fmt.Printf("compared %d different key/value pairs between %s and %s\n", len(failedKVAs), skp.A, skp.B) - require.Equal(t, len(failedKVAs), 0, GetSimulationLog(skp.A.Name(), app.SimulationManager().StoreDecoders, failedKVAs, failedKVBs)) - } -} - -func TestAppSimulationAfterImport(t *testing.T) { - config, db, dir, logger, skip, err := SetupSimulation("leveldb-app-sim", "Simulation") - if skip { - t.Skip("skipping application simulation after import") - } - require.NoError(t, err, "simulation setup failed") - - defer func() { - db.Close() - require.NoError(t, os.RemoveAll(dir)) - }() - - app := NewSimApp(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, FlagPeriodValue, MakeTestEncodingConfig(), simtestutil.EmptyAppOptions{}, fauxMerkleModeOpt) - require.Equal(t, "SimApp", app.Name()) - - // Run randomized simulation - stopEarly, simParams, simErr := simulation.SimulateFromSeed( - t, - os.Stdout, - app.BaseApp, - AppStateFn(app.AppCodec(), app.SimulationManager()), - simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - SimulationOperations(app, app.AppCodec(), config), - app.ModuleAccountAddrs(), - config, - app.AppCodec(), - ) - - // export state and simParams before the simulation error is checked - err = CheckExportSimulation(app, config, simParams) - require.NoError(t, err) - require.NoError(t, simErr) - - if config.Commit { - PrintStats(db) - } - - if stopEarly { - fmt.Println("can't export or import a zero-validator genesis, exiting test...") - return - } - - fmt.Printf("exporting genesis...\n") - - exported, err := app.ExportAppStateAndValidators(true, []string{}) - require.NoError(t, err) - - fmt.Printf("importing genesis...\n") - - _, newDB, newDir, _, _, err := SetupSimulation("leveldb-app-sim-2", "Simulation-2") - require.NoError(t, err, "simulation setup failed") - - defer func() { - newDB.Close() - require.NoError(t, os.RemoveAll(newDir)) - }() - - newApp := NewSimApp(log.NewNopLogger(), newDB, nil, true, map[int64]bool{}, DefaultNodeHome, FlagPeriodValue, MakeTestEncodingConfig(), simtestutil.EmptyAppOptions{}, fauxMerkleModeOpt) - require.Equal(t, "SimApp", newApp.Name()) - - newApp.InitChain(abci.RequestInitChain{ - AppStateBytes: exported.AppState, - }) - - _, _, err = simulation.SimulateFromSeed( - t, - os.Stdout, - newApp.GetBaseApp(), - AppStateFn(app.AppCodec(), app.SimulationManager()), - simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - SimulationOperations(newApp, newApp.AppCodec(), config), - app.ModuleAccountAddrs(), - config, - app.AppCodec(), - ) - require.NoError(t, err) -} - -// TODO: Make another test for the fuzzer itself, which just has noOp txs -// and doesn't depend on the application. -func TestAppStateDeterminism(t *testing.T) { - if !FlagEnabledValue { - t.Skip("skipping application simulation") - } - - config := NewConfigFromFlags() - config.InitialBlockHeight = 1 - config.ExportParamsPath = "" - config.OnOperation = false - config.AllInvariants = false - config.ChainID = "simulation-app" - - numSeeds := 3 - numTimesToRunPerSeed := 5 - appHashList := make([]json.RawMessage, numTimesToRunPerSeed) - - for i := 0; i < numSeeds; i++ { - config.Seed = rand.Int63() - - for j := 0; j < numTimesToRunPerSeed; j++ { - var logger log.Logger - if FlagVerboseValue { - logger = log.TestingLogger() - } else { - logger = log.NewNopLogger() - } - - db := dbm.NewMemDB() - app := NewSimApp(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, FlagPeriodValue, MakeTestEncodingConfig(), simtestutil.EmptyAppOptions{}, interBlockCacheOpt()) - - fmt.Printf( - "running non-determinism simulation; seed %d: %d/%d, attempt: %d/%d\n", - config.Seed, i+1, numSeeds, j+1, numTimesToRunPerSeed, - ) - - _, _, err := simulation.SimulateFromSeed( - t, - os.Stdout, - app.BaseApp, - AppStateFn(app.AppCodec(), app.SimulationManager()), - simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - SimulationOperations(app, app.AppCodec(), config), - app.ModuleAccountAddrs(), - config, - app.AppCodec(), - ) - require.NoError(t, err) - - if config.Commit { - PrintStats(db) - } - - appHash := app.LastCommitID().Hash - appHashList[j] = appHash - - if j != 0 { - require.Equal( - t, string(appHashList[0]), string(appHashList[j]), - "non-determinism in seed %d: %d/%d, attempt: %d/%d\n", config.Seed, i+1, numSeeds, j+1, numTimesToRunPerSeed, - ) - } - } - } -} diff --git a/app/ibctesting/simapp/simd/cmd/cmd_test.go b/app/ibctesting/simapp/simd/cmd/cmd_test.go deleted file mode 100644 index 5f23fbea1..000000000 --- a/app/ibctesting/simapp/simd/cmd/cmd_test.go +++ /dev/null @@ -1,12 +0,0 @@ -package cmd_test - -// func TestInitCmd(t *testing.T) { -// rootCmd, _ := cmd.NewRootCmd() -// rootCmd.SetArgs([]string{ -// "init", // Test the init cmd -// "simapp-test", // Moniker -// fmt.Sprintf("--%s=%s", cli.FlagOverwrite, "true"), // Overwrite genesis.json, in case it already exists -// }) - -// require.NoError(t, svrcmd.Execute(rootCmd, "simd", simapp.DefaultNodeHome)) -// } diff --git a/app/ibctesting/simapp/simd/cmd/genaccounts.go b/app/ibctesting/simapp/simd/cmd/genaccounts.go deleted file mode 100644 index 0b25662d0..000000000 --- a/app/ibctesting/simapp/simd/cmd/genaccounts.go +++ /dev/null @@ -1,184 +0,0 @@ -package cmd - -import ( - "bufio" - "encoding/json" - "errors" - "fmt" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/crypto/keyring" - "github.com/cosmos/cosmos-sdk/server" - sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - authvesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/genutil" - genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" - "github.com/spf13/cobra" -) - -const ( - flagVestingStart = "vesting-start-time" - flagVestingEnd = "vesting-end-time" - flagVestingAmt = "vesting-amount" -) - -// AddGenesisAccountCmd returns add-genesis-account cobra Command. -func AddGenesisAccountCmd(defaultNodeHome string) *cobra.Command { - cmd := &cobra.Command{ - Use: "add-genesis-account [address_or_key_name] [coin][,[coin]]", - Short: "Add a genesis account to genesis.json", - Long: `Add a genesis account to genesis.json. The provided account must specify -the account address or key name and a list of initial coins. If a key name is given, -the address will be looked up in the local Keybase. The list of initial tokens must -contain valid denominations. Accounts may optionally be supplied with vesting parameters. -`, - Args: cobra.ExactArgs(2), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - serverCtx := server.GetServerContextFromCmd(cmd) - config := serverCtx.Config - - config.SetRoot(clientCtx.HomeDir) - - var kr keyring.Keyring - addr, err := sdk.AccAddressFromBech32(args[0]) - if err != nil { - inBuf := bufio.NewReader(cmd.InOrStdin()) - keyringBackend, _ := cmd.Flags().GetString(flags.FlagKeyringBackend) - - if keyringBackend != "" && clientCtx.Keyring == nil { - var err error - kr, err = keyring.New(sdk.KeyringServiceName(), keyringBackend, clientCtx.HomeDir, inBuf, clientCtx.Codec) - if err != nil { - return err - } - } else { - kr = clientCtx.Keyring - } - - k, err := kr.Key(args[0]) - if err != nil { - return fmt.Errorf("failed to get address from Keyring: %w", err) - } - - addr, err = k.GetAddress() - if err != nil { - return err - } - } - - coins, err := sdk.ParseCoinsNormalized(args[1]) - if err != nil { - return fmt.Errorf("failed to parse coins: %w", err) - } - - vestingStart, _ := cmd.Flags().GetInt64(flagVestingStart) - vestingEnd, _ := cmd.Flags().GetInt64(flagVestingEnd) - vestingAmtStr, _ := cmd.Flags().GetString(flagVestingAmt) - - vestingAmt, err := sdk.ParseCoinsNormalized(vestingAmtStr) - if err != nil { - return fmt.Errorf("failed to parse vesting amount: %w", err) - } - - // create concrete account type based on input parameters - var genAccount authtypes.GenesisAccount - - balances := banktypes.Balance{Address: addr.String(), Coins: coins.Sort()} - baseAccount := authtypes.NewBaseAccount(addr, nil, 0, 0) - - if !vestingAmt.IsZero() { - baseVestingAccount := authvesting.NewBaseVestingAccount(baseAccount, vestingAmt.Sort(), vestingEnd) - - if (balances.Coins.IsZero() && !baseVestingAccount.OriginalVesting.IsZero()) || - baseVestingAccount.OriginalVesting.IsAnyGT(balances.Coins) { - return errors.New("vesting amount cannot be greater than total amount") - } - - switch { - case vestingStart != 0 && vestingEnd != 0: - genAccount = authvesting.NewContinuousVestingAccountRaw(baseVestingAccount, vestingStart) - - case vestingEnd != 0: - genAccount = authvesting.NewDelayedVestingAccountRaw(baseVestingAccount) - - default: - return errors.New("invalid vesting parameters; must supply start and end time or end time") - } - } else { - genAccount = baseAccount - } - - if err := genAccount.Validate(); err != nil { - return fmt.Errorf("failed to validate new genesis account: %w", err) - } - - genFile := config.GenesisFile() - appState, genDoc, err := genutiltypes.GenesisStateFromGenFile(genFile) - if err != nil { - return fmt.Errorf("failed to unmarshal genesis state: %w", err) - } - - authGenState := authtypes.GetGenesisStateFromAppState(clientCtx.Codec, appState) - - accs, err := authtypes.UnpackAccounts(authGenState.Accounts) - if err != nil { - return fmt.Errorf("failed to get accounts from any: %w", err) - } - - if accs.Contains(addr) { - return fmt.Errorf("cannot add account at existing address %s", addr) - } - - // Add the new account to the set of genesis accounts and sanitize the - // accounts afterwards. - accs = append(accs, genAccount) - accs = authtypes.SanitizeGenesisAccounts(accs) - - genAccs, err := authtypes.PackAccounts(accs) - if err != nil { - return fmt.Errorf("failed to convert accounts into any's: %w", err) - } - authGenState.Accounts = genAccs - - authGenStateBz, err := clientCtx.Codec.MarshalJSON(&authGenState) - if err != nil { - return fmt.Errorf("failed to marshal auth genesis state: %w", err) - } - - appState[authtypes.ModuleName] = authGenStateBz - - bankGenState := banktypes.GetGenesisStateFromAppState(clientCtx.Codec, appState) - bankGenState.Balances = append(bankGenState.Balances, balances) - bankGenState.Balances = banktypes.SanitizeGenesisBalances(bankGenState.Balances) - bankGenState.Supply = bankGenState.Supply.Add(balances.Coins...) - - bankGenStateBz, err := clientCtx.Codec.MarshalJSON(bankGenState) - if err != nil { - return fmt.Errorf("failed to marshal bank genesis state: %w", err) - } - - appState[banktypes.ModuleName] = bankGenStateBz - - appStateJSON, err := json.Marshal(appState) - if err != nil { - return fmt.Errorf("failed to marshal application genesis state: %w", err) - } - - genDoc.AppState = appStateJSON - return genutil.ExportGenesisFile(genDoc, genFile) - }, - } - - cmd.Flags().String(flags.FlagHome, defaultNodeHome, "The application home directory") - cmd.Flags().String(flags.FlagKeyringBackend, flags.DefaultKeyringBackend, "Select keyring's backend (os|file|kwallet|pass|test)") - cmd.Flags().String(flagVestingAmt, "", "amount of coins for vesting accounts") - cmd.Flags().Int64(flagVestingStart, 0, "schedule start time (unix epoch) for vesting accounts") - cmd.Flags().Int64(flagVestingEnd, 0, "schedule end time (unix epoch) for vesting accounts") - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/app/ibctesting/simapp/simd/cmd/genaccounts_test.go b/app/ibctesting/simapp/simd/cmd/genaccounts_test.go deleted file mode 100644 index 97b549c90..000000000 --- a/app/ibctesting/simapp/simd/cmd/genaccounts_test.go +++ /dev/null @@ -1,86 +0,0 @@ -package cmd_test - -import ( - "context" - "fmt" - "testing" - - "github.com/cometbft/cometbft/libs/log" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/server" - "github.com/cosmos/cosmos-sdk/testutil/testdata" - "github.com/cosmos/cosmos-sdk/types/module" - "github.com/cosmos/cosmos-sdk/x/genutil" - genutiltest "github.com/cosmos/cosmos-sdk/x/genutil/client/testutil" - "github.com/spf13/viper" - "github.com/stretchr/testify/require" - - "github.com/cosmos/ibc-go/v7/testing/simapp" - simcmd "github.com/cosmos/ibc-go/v7/testing/simapp/simd/cmd" -) - -var testMbm = module.NewBasicManager(genutil.AppModuleBasic{}) - -func TestAddGenesisAccountCmd(t *testing.T) { - _, _, addr1 := testdata.KeyTestPubAddr() - tests := []struct { - name string - addr string - denom string - expectErr bool - }{ - { - name: "invalid address", - addr: "", - denom: "1000atom", - expectErr: true, - }, - { - name: "valid address", - addr: addr1.String(), - denom: "1000atom", - expectErr: false, - }, - { - name: "multiple denoms", - addr: addr1.String(), - denom: "1000atom, 2000stake", - expectErr: false, - }, - } - - for _, tc := range tests { - tc := tc - t.Run(tc.name, func(t *testing.T) { - home := t.TempDir() - logger := log.NewNopLogger() - cfg, err := genutiltest.CreateDefaultTendermintConfig(home) - require.NoError(t, err) - - appCodec := simapp.MakeTestEncodingConfig().Marshaler - err = genutiltest.ExecInitCmd(testMbm, home, appCodec) - require.NoError(t, err) - - serverCtx := server.NewContext(viper.New(), cfg, logger) - clientCtx := client.Context{}.WithCodec(appCodec).WithHomeDir(home) - - ctx := context.Background() - ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx) - ctx = context.WithValue(ctx, server.ServerContextKey, serverCtx) - - cmd := simcmd.AddGenesisAccountCmd(home) - cmd.SetArgs([]string{ - tc.addr, - tc.denom, - fmt.Sprintf("--%s=home", flags.FlagHome), - }) - - if tc.expectErr { - require.Error(t, cmd.ExecuteContext(ctx)) - } else { - require.NoError(t, cmd.ExecuteContext(ctx)) - } - }) - } -} diff --git a/app/ibctesting/simapp/simd/cmd/root.go b/app/ibctesting/simapp/simd/cmd/root.go deleted file mode 100644 index 8eaeafdec..000000000 --- a/app/ibctesting/simapp/simd/cmd/root.go +++ /dev/null @@ -1,324 +0,0 @@ -package cmd - -import ( - "errors" - "io" - "os" - "path/filepath" - - sdkcmd "cosmossdk.io/simapp/simd/cmd" - rosettaCmd "cosmossdk.io/tools/rosetta/cmd" - dbm "github.com/cometbft/cometbft-db" - tmcfg "github.com/cometbft/cometbft/config" - tmcli "github.com/cometbft/cometbft/libs/cli" - "github.com/cometbft/cometbft/libs/log" - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/config" - "github.com/cosmos/cosmos-sdk/client/debug" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/keys" - "github.com/cosmos/cosmos-sdk/client/rpc" - "github.com/cosmos/cosmos-sdk/server" - serverconfig "github.com/cosmos/cosmos-sdk/server/config" - servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/snapshots" - snapshottypes "github.com/cosmos/cosmos-sdk/snapshots/types" - "github.com/cosmos/cosmos-sdk/store" - sdk "github.com/cosmos/cosmos-sdk/types" - authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" - "github.com/cosmos/cosmos-sdk/x/auth/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/crisis" - "github.com/cosmos/cosmos-sdk/x/genutil" - genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" - genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" - "github.com/spf13/cast" - "github.com/spf13/cobra" - - "github.com/cosmos/ibc-go/v7/testing/simapp" - "github.com/cosmos/ibc-go/v7/testing/simapp/params" -) - -// NewRootCmd creates a new root command for simd. It is called once in the -// main function. -func NewRootCmd() (*cobra.Command, params.EncodingConfig) { - encodingConfig := simapp.MakeTestEncodingConfig() - initClientCtx := client.Context{}. - WithCodec(encodingConfig.Marshaler). - WithInterfaceRegistry(encodingConfig.InterfaceRegistry). - WithTxConfig(encodingConfig.TxConfig). - WithLegacyAmino(encodingConfig.Amino). - WithInput(os.Stdin). - WithAccountRetriever(types.AccountRetriever{}). - WithHomeDir(simapp.DefaultNodeHome). - WithViper("") // In simapp, we don't use any prefix for env variables. - - rootCmd := &cobra.Command{ - Use: "simd", - Short: "simulation app", - PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { - // set the default command outputs - cmd.SetOut(cmd.OutOrStdout()) - cmd.SetErr(cmd.ErrOrStderr()) - - initClientCtx, err := client.ReadPersistentCommandFlags(initClientCtx, cmd.Flags()) - if err != nil { - return err - } - - initClientCtx, err = config.ReadFromClientConfig(initClientCtx) - if err != nil { - return err - } - - if err := client.SetCmdClientContextHandler(initClientCtx, cmd); err != nil { - return err - } - - customAppTemplate, customAppConfig := initAppConfig() - customTMConfig := initTendermintConfig() - - return server.InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig, customTMConfig) - }, - } - - initRootCmd(rootCmd, encodingConfig) - - return rootCmd, encodingConfig -} - -// initTendermintConfig helps to override default Tendermint Config values. -// return tmcfg.DefaultConfig if no custom configuration is required for the application. -func initTendermintConfig() *tmcfg.Config { - cfg := tmcfg.DefaultConfig() - - // these values put a higher strain on node memory - // cfg.P2P.MaxNumInboundPeers = 100 - // cfg.P2P.MaxNumOutboundPeers = 40 - - return cfg -} - -// initAppConfig helps to override default appConfig template and configs. -// return "", nil if no custom configuration is required for the application. -func initAppConfig() (string, interface{}) { - // The following code snippet is just for reference. - - // WASMConfig defines configuration for the wasm module. - type WASMConfig struct { - // This is the maximum sdk gas (wasm and storage) that we allow for any x/wasm "smart" queries - QueryGasLimit uint64 `mapstructure:"query_gas_limit"` - - // Address defines the gRPC-web server to listen on - LruSize uint64 `mapstructure:"lru_size"` - } - - type CustomAppConfig struct { - serverconfig.Config - - WASM WASMConfig `mapstructure:"wasm"` - } - - // Optionally allow the chain developer to overwrite the SDK's default - // server config. - srvCfg := serverconfig.DefaultConfig() - // The SDK's default minimum gas price is set to "" (empty value) inside - // app.toml. If left empty by validators, the node will halt on startup. - // However, the chain developer can set a default app.toml value for their - // validators here. - // - // In summary: - // - if you leave srvCfg.MinGasPrices = "", all validators MUST tweak their - // own app.toml config, - // - if you set srvCfg.MinGasPrices non-empty, validators CAN tweak their - // own app.toml to override, or use this default value. - // - // In simapp, we set the min gas prices to 0. - srvCfg.MinGasPrices = "0stake" - - customAppConfig := CustomAppConfig{ - Config: *srvCfg, - WASM: WASMConfig{ - LruSize: 1, - QueryGasLimit: 300000, - }, - } - - customAppTemplate := serverconfig.DefaultConfigTemplate + ` -[wasm] -# This is the maximum sdk gas (wasm and storage) that we allow for any x/wasm "smart" queries -query_gas_limit = 300000 -# This is the number of wasm vm instances we keep cached in memory for speed-up -# Warning: this is currently unstable and may lead to crashes, best to keep for 0 unless testing locally -lru_size = 0` - - return customAppTemplate, customAppConfig -} - -func initRootCmd(rootCmd *cobra.Command, encodingConfig params.EncodingConfig) { - cfg := sdk.GetConfig() - cfg.Seal() - gentxModule := simapp.ModuleBasics[genutiltypes.ModuleName].(genutil.AppModuleBasic) - - rootCmd.AddCommand( - genutilcli.InitCmd(simapp.ModuleBasics, simapp.DefaultNodeHome), - genutilcli.CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, simapp.DefaultNodeHome, gentxModule.GenTxValidator), - genutilcli.MigrateGenesisCmd(), - genutilcli.GenTxCmd(simapp.ModuleBasics, encodingConfig.TxConfig, banktypes.GenesisBalancesIterator{}, simapp.DefaultNodeHome), - genutilcli.ValidateGenesisCmd(simapp.ModuleBasics), - AddGenesisAccountCmd(simapp.DefaultNodeHome), - tmcli.NewCompletionCmd(rootCmd, true), - sdkcmd.NewTestnetCmd(simapp.ModuleBasics, banktypes.GenesisBalancesIterator{}), - debug.Cmd(), - config.Cmd(), - ) - - a := appCreator{encodingConfig} - server.AddCommands(rootCmd, simapp.DefaultNodeHome, a.newApp, a.appExport, addModuleInitFlags) - - // add keybase, auxiliary RPC, query, and tx child commands - rootCmd.AddCommand( - rpc.StatusCommand(), - queryCommand(), - txCommand(), - keys.Commands(simapp.DefaultNodeHome), - ) - - // add rosetta - rootCmd.AddCommand(rosettaCmd.RosettaCommand(encodingConfig.InterfaceRegistry, encodingConfig.Marshaler)) -} - -func addModuleInitFlags(startCmd *cobra.Command) { - crisis.AddModuleInitFlags(startCmd) -} - -func queryCommand() *cobra.Command { - cmd := &cobra.Command{ - Use: "query", - Aliases: []string{"q"}, - Short: "Querying subcommands", - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand( - authcmd.GetAccountCmd(), - rpc.ValidatorCommand(), - rpc.BlockCommand(), - authcmd.QueryTxsByEventsCmd(), - authcmd.QueryTxCmd(), - ) - - simapp.ModuleBasics.AddQueryCommands(cmd) - cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") - - return cmd -} - -func txCommand() *cobra.Command { - cmd := &cobra.Command{ - Use: "tx", - Short: "Transactions subcommands", - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand( - authcmd.GetSignCommand(), - authcmd.GetSignBatchCommand(), - authcmd.GetMultiSignCommand(), - authcmd.GetMultiSignBatchCmd(), - authcmd.GetValidateSignaturesCommand(), - authcmd.GetBroadcastCommand(), - authcmd.GetEncodeCommand(), - authcmd.GetDecodeCommand(), - ) - - simapp.ModuleBasics.AddTxCommands(cmd) - cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") - - return cmd -} - -type appCreator struct { - encCfg params.EncodingConfig -} - -// newApp is an appCreator -func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) servertypes.Application { - var cache sdk.MultiStorePersistentCache - - if cast.ToBool(appOpts.Get(server.FlagInterBlockCache)) { - cache = store.NewCommitKVStoreCacheManager() - } - - skipUpgradeHeights := make(map[int64]bool) - for _, h := range cast.ToIntSlice(appOpts.Get(server.FlagUnsafeSkipUpgrades)) { - skipUpgradeHeights[int64(h)] = true - } - - pruningOpts, err := server.GetPruningOptionsFromFlags(appOpts) - if err != nil { - panic(err) - } - - snapshotDir := filepath.Join(cast.ToString(appOpts.Get(flags.FlagHome)), "data", "snapshots") - snapshotDB, err := dbm.NewDB("metadata", server.GetAppDBBackend(appOpts), snapshotDir) - if err != nil { - panic(err) - } - snapshotStore, err := snapshots.NewStore(snapshotDB, snapshotDir) - if err != nil { - panic(err) - } - - snapshotOptions := snapshottypes.NewSnapshotOptions( - cast.ToUint64(appOpts.Get(server.FlagStateSyncSnapshotInterval)), - cast.ToUint32(appOpts.Get(server.FlagStateSyncSnapshotKeepRecent)), - ) - - return simapp.NewSimApp( - logger, db, traceStore, true, skipUpgradeHeights, - cast.ToString(appOpts.Get(flags.FlagHome)), - cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod)), - a.encCfg, - appOpts, - baseapp.SetPruning(pruningOpts), - baseapp.SetMinGasPrices(cast.ToString(appOpts.Get(server.FlagMinGasPrices))), - baseapp.SetHaltHeight(cast.ToUint64(appOpts.Get(server.FlagHaltHeight))), - baseapp.SetHaltTime(cast.ToUint64(appOpts.Get(server.FlagHaltTime))), - baseapp.SetMinRetainBlocks(cast.ToUint64(appOpts.Get(server.FlagMinRetainBlocks))), - baseapp.SetInterBlockCache(cache), - baseapp.SetTrace(cast.ToBool(appOpts.Get(server.FlagTrace))), - baseapp.SetIndexEvents(cast.ToStringSlice(appOpts.Get(server.FlagIndexEvents))), - baseapp.SetSnapshot(snapshotStore, snapshotOptions), - ) -} - -// appExport creates a new simapp (optionally at a given height) -// and exports state. -func (a appCreator) appExport( - logger log.Logger, db dbm.DB, traceStore io.Writer, height int64, forZeroHeight bool, jailAllowedAddrs []string, - appOpts servertypes.AppOptions, _ []string, -) (servertypes.ExportedApp, error) { - var simApp *simapp.SimApp - homePath, ok := appOpts.Get(flags.FlagHome).(string) - if !ok || homePath == "" { - return servertypes.ExportedApp{}, errors.New("application home not set") - } - - if height != -1 { - simApp = simapp.NewSimApp(logger, db, traceStore, false, map[int64]bool{}, homePath, uint(1), a.encCfg, appOpts) - - if err := simApp.LoadHeight(height); err != nil { - return servertypes.ExportedApp{}, err - } - } else { - simApp = simapp.NewSimApp(logger, db, traceStore, true, map[int64]bool{}, homePath, uint(1), a.encCfg, appOpts) - } - - return simApp.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs) -} diff --git a/app/ibctesting/simapp/simd/main.go b/app/ibctesting/simapp/simd/main.go deleted file mode 100644 index 07b2ab968..000000000 --- a/app/ibctesting/simapp/simd/main.go +++ /dev/null @@ -1,25 +0,0 @@ -package main - -import ( - "os" - - "github.com/cosmos/cosmos-sdk/server" - svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" - - "github.com/cosmos/ibc-go/v7/testing/simapp" - "github.com/cosmos/ibc-go/v7/testing/simapp/simd/cmd" -) - -func main() { - rootCmd, _ := cmd.NewRootCmd() - - if err := svrcmd.Execute(rootCmd, "simd", simapp.DefaultNodeHome); err != nil { - switch e := err.(type) { - case server.ErrorCode: - os.Exit(e.Code) - - default: - os.Exit(1) - } - } -} diff --git a/app/ibctesting/simapp/state.go b/app/ibctesting/simapp/state.go deleted file mode 100644 index 29fa19550..000000000 --- a/app/ibctesting/simapp/state.go +++ /dev/null @@ -1,233 +0,0 @@ -package simapp - -import ( - "encoding/json" - "fmt" - "io" - "math/rand" - "os" - "time" - - "cosmossdk.io/math" - tmjson "github.com/cometbft/cometbft/libs/json" - tmtypes "github.com/cometbft/cometbft/types" - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - - simappparams "github.com/cosmos/ibc-go/v7/testing/simapp/params" -) - -// AppStateFn returns the initial application state using a genesis or the simulation parameters. -// It panics if the user provides files for both of them. -// If a file is not given for the genesis or the sim params, it creates a randomized one. -func AppStateFn(cdc codec.JSONCodec, simManager *module.SimulationManager) simtypes.AppStateFn { - return func(r *rand.Rand, accs []simtypes.Account, config simtypes.Config, - ) (appState json.RawMessage, simAccs []simtypes.Account, chainID string, genesisTimestamp time.Time) { - if FlagGenesisTimeValue == 0 { - genesisTimestamp = simtypes.RandTimestamp(r) - } else { - genesisTimestamp = time.Unix(FlagGenesisTimeValue, 0) - } - - chainID = config.ChainID - switch { - case config.ParamsFile != "" && config.GenesisFile != "": - panic("cannot provide both a genesis file and a params file") - - case config.GenesisFile != "": - // override the default chain-id from simapp to set it later to the config - genesisDoc, accounts := AppStateFromGenesisFileFn(r, cdc, config.GenesisFile) - - if FlagGenesisTimeValue == 0 { - // use genesis timestamp if no custom timestamp is provided (i.e no random timestamp) - genesisTimestamp = genesisDoc.GenesisTime - } - - appState = genesisDoc.AppState - chainID = genesisDoc.ChainID - simAccs = accounts - - case config.ParamsFile != "": - appParams := make(simtypes.AppParams) - bz, err := os.ReadFile(config.ParamsFile) - if err != nil { - panic(err) - } - - err = json.Unmarshal(bz, &appParams) - if err != nil { - panic(err) - } - appState, simAccs = AppStateRandomizedFn(simManager, r, cdc, accs, genesisTimestamp, appParams) - - default: - appParams := make(simtypes.AppParams) - appState, simAccs = AppStateRandomizedFn(simManager, r, cdc, accs, genesisTimestamp, appParams) - } - - rawState := make(map[string]json.RawMessage) - err := json.Unmarshal(appState, &rawState) - if err != nil { - panic(err) - } - - stakingStateBz, ok := rawState[stakingtypes.ModuleName] - if !ok { - panic("staking genesis state is missing") - } - - stakingState := new(stakingtypes.GenesisState) - err = cdc.UnmarshalJSON(stakingStateBz, stakingState) - if err != nil { - panic(err) - } - // compute not bonded balance - notBondedTokens := sdk.ZeroInt() - for _, val := range stakingState.Validators { - if val.Status != stakingtypes.Unbonded { - continue - } - notBondedTokens = notBondedTokens.Add(val.GetTokens()) - } - notBondedCoins := sdk.NewCoin(stakingState.Params.BondDenom, notBondedTokens) - // edit bank state to make it have the not bonded pool tokens - bankStateBz, ok := rawState[banktypes.ModuleName] - // TODO(fdymylja/jonathan): should we panic in this case - if !ok { - panic("bank genesis state is missing") - } - bankState := new(banktypes.GenesisState) - err = cdc.UnmarshalJSON(bankStateBz, bankState) - if err != nil { - panic(err) - } - - bankState.Balances = append(bankState.Balances, banktypes.Balance{ - Address: authtypes.NewModuleAddress(stakingtypes.NotBondedPoolName).String(), - Coins: sdk.NewCoins(notBondedCoins), - }) - - // change appState back - rawState[stakingtypes.ModuleName] = cdc.MustMarshalJSON(stakingState) - rawState[banktypes.ModuleName] = cdc.MustMarshalJSON(bankState) - - // replace appstate - appState, err = json.Marshal(rawState) - if err != nil { - panic(err) - } - return appState, simAccs, chainID, genesisTimestamp - } -} - -// AppStateRandomizedFn creates calls each module's GenesisState generator function -// and creates the simulation params -func AppStateRandomizedFn( - simManager *module.SimulationManager, r *rand.Rand, cdc codec.JSONCodec, - accs []simtypes.Account, genesisTimestamp time.Time, appParams simtypes.AppParams, -) (json.RawMessage, []simtypes.Account) { - numAccs := int64(len(accs)) - genesisState := NewDefaultGenesisState(cdc) - - // generate a random amount of initial stake coins and a random initial - // number of bonded accounts - var initialStake, numInitiallyBonded int64 - appParams.GetOrGenerate( - cdc, simappparams.StakePerAccount, &initialStake, r, - func(r *rand.Rand) { initialStake = r.Int63n(1e12) }, - ) - appParams.GetOrGenerate( - cdc, simappparams.InitiallyBondedValidators, &numInitiallyBonded, r, - func(r *rand.Rand) { numInitiallyBonded = int64(r.Intn(300)) }, - ) - - if numInitiallyBonded > numAccs { - numInitiallyBonded = numAccs - } - - fmt.Printf( - `Selected randomly generated parameters for simulated genesis: -{ - stake_per_account: "%d", - initially_bonded_validators: "%d" -} -`, initialStake, numInitiallyBonded, - ) - - simState := &module.SimulationState{ - AppParams: appParams, - Cdc: cdc, - Rand: r, - GenState: genesisState, - Accounts: accs, - InitialStake: math.NewInt(initialStake), - NumBonded: numInitiallyBonded, - GenTimestamp: genesisTimestamp, - } - - simManager.GenerateGenesisStates(simState) - - appState, err := json.Marshal(genesisState) - if err != nil { - panic(err) - } - - return appState, accs -} - -// AppStateFromGenesisFileFn util function to generate the genesis AppState -// from a genesis.json file. -func AppStateFromGenesisFileFn(r io.Reader, cdc codec.JSONCodec, genesisFile string) (tmtypes.GenesisDoc, []simtypes.Account) { - bytes, err := os.ReadFile(genesisFile) - if err != nil { - panic(err) - } - - var genesis tmtypes.GenesisDoc - // NOTE: Tendermint uses a custom JSON decoder for GenesisDoc - err = tmjson.Unmarshal(bytes, &genesis) - if err != nil { - panic(err) - } - - var appState GenesisState - err = json.Unmarshal(genesis.AppState, &appState) - if err != nil { - panic(err) - } - - var authGenesis authtypes.GenesisState - if appState[authtypes.ModuleName] != nil { - cdc.MustUnmarshalJSON(appState[authtypes.ModuleName], &authGenesis) - } - - newAccs := make([]simtypes.Account, len(authGenesis.Accounts)) - for i, acc := range authGenesis.Accounts { - // Pick a random private key, since we don't know the actual key - // This should be fine as it's only used for mock Tendermint validators - // and these keys are never actually used to sign by mock Tendermint. - privkeySeed := make([]byte, 15) - if _, err := r.Read(privkeySeed); err != nil { - panic(err) - } - - privKey := secp256k1.GenPrivKeyFromSecret(privkeySeed) - - a, ok := acc.GetCachedValue().(authtypes.AccountI) - if !ok { - panic("expected account") - } - - // create simulator accounts - simAcc := simtypes.Account{PrivKey: privKey, PubKey: privKey.PubKey(), Address: a.GetAddress()} - newAccs[i] = simAcc - } - - return genesis, newAccs -} diff --git a/app/ibctesting/simapp/test_helpers.go b/app/ibctesting/simapp/test_helpers.go deleted file mode 100644 index 332fbee01..000000000 --- a/app/ibctesting/simapp/test_helpers.go +++ /dev/null @@ -1,241 +0,0 @@ -package simapp - -import ( - "encoding/json" - "math/rand" - "testing" - "time" - - dbm "github.com/cometbft/cometbft-db" - abci "github.com/cometbft/cometbft/abci/types" - "github.com/cometbft/cometbft/libs/log" - tmproto "github.com/cometbft/cometbft/proto/tendermint/types" - tmtypes "github.com/cometbft/cometbft/types" - bam "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/client" - codectypes "github.com/cosmos/cosmos-sdk/codec/types" - cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" - "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" - simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/stretchr/testify/require" - - "github.com/cosmos/ibc-go/v7/testing/mock" -) - -// DefaultConsensusParams defines the default Tendermint consensus params used in -// SimApp testing. -var DefaultConsensusParams = &tmproto.ConsensusParams{ - Block: &tmproto.BlockParams{ - MaxBytes: 200000, - MaxGas: 2000000, - }, - Evidence: &tmproto.EvidenceParams{ - MaxAgeNumBlocks: 302400, - MaxAgeDuration: 504 * time.Hour, // 3 weeks is the max duration - MaxBytes: 10000, - }, - Validator: &tmproto.ValidatorParams{ - PubKeyTypes: []string{ - tmtypes.ABCIPubKeyTypeEd25519, - }, - }, -} - -func setup(withGenesis bool, invCheckPeriod uint) (*SimApp, GenesisState) { - db := dbm.NewMemDB() - encCdc := MakeTestEncodingConfig() - app := NewSimApp(log.NewNopLogger(), db, nil, true, map[int64]bool{}, DefaultNodeHome, invCheckPeriod, encCdc, simtestutil.EmptyAppOptions{}) - if withGenesis { - return app, NewDefaultGenesisState(encCdc.Marshaler) - } - return app, GenesisState{} -} - -// Setup initializes a new SimApp. A Nop logger is set in SimApp. -func Setup(_ bool) *SimApp { - privVal := mock.NewPV() - pubKey, _ := privVal.GetPubKey() - - // create validator set with single validator - validator := tmtypes.NewValidator(pubKey, 1) - valSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{validator}) - - // generate genesis account - senderPrivKey := secp256k1.GenPrivKey() - acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), 0, 0) - balance := banktypes.Balance{ - Address: acc.GetAddress().String(), - Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100000000000000))), - } - - app := SetupWithGenesisValSet(valSet, []authtypes.GenesisAccount{acc}, balance) - - return app -} - -// SetupWithGenesisValSet initializes a new SimApp with a validator set and genesis accounts -// that also act as delegators. For simplicity, each validator is bonded with a delegation -// of one consensus engine unit in the default token of the simapp from first genesis -// account. A Nop logger is set in SimApp. -func SetupWithGenesisValSet(valSet *tmtypes.ValidatorSet, genAccs []authtypes.GenesisAccount, balances ...banktypes.Balance) *SimApp { - app, genesisState := setup(true, 5) - genesisState = genesisStateWithValSet(app, genesisState, valSet, genAccs, balances...) - - stateBytes, _ := json.MarshalIndent(genesisState, "", " ") - - // init chain will set the validator set and initialize the genesis accounts - app.InitChain( - abci.RequestInitChain{ - Validators: []abci.ValidatorUpdate{}, - ConsensusParams: DefaultConsensusParams, - AppStateBytes: stateBytes, - }, - ) - - // commit genesis changes - app.Commit() - app.BeginBlock(abci.RequestBeginBlock{Header: tmproto.Header{ - Height: app.LastBlockHeight() + 1, - AppHash: app.LastCommitID().Hash, - ValidatorsHash: valSet.Hash(), - NextValidatorsHash: valSet.Hash(), - }}) - - return app -} - -func genesisStateWithValSet(app *SimApp, genesisState GenesisState, - valSet *tmtypes.ValidatorSet, genAccs []authtypes.GenesisAccount, - balances ...banktypes.Balance, -) GenesisState { - // set genesis accounts - authGenesis := authtypes.NewGenesisState(authtypes.DefaultParams(), genAccs) - genesisState[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(authGenesis) - - validators := make([]stakingtypes.Validator, 0, len(valSet.Validators)) - delegations := make([]stakingtypes.Delegation, 0, len(valSet.Validators)) - - bondAmt := sdk.DefaultPowerReduction - - for _, val := range valSet.Validators { - pk, _ := cryptocodec.FromTmPubKeyInterface(val.PubKey) - pkAny, _ := codectypes.NewAnyWithValue(pk) - validator := stakingtypes.Validator{ - OperatorAddress: sdk.ValAddress(val.Address).String(), - ConsensusPubkey: pkAny, - Jailed: false, - Status: stakingtypes.Bonded, - Tokens: bondAmt, - DelegatorShares: sdk.OneDec(), - Description: stakingtypes.Description{}, - UnbondingHeight: int64(0), - UnbondingTime: time.Unix(0, 0).UTC(), - Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()), - MinSelfDelegation: sdk.ZeroInt(), - } - validators = append(validators, validator) - delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdk.OneDec())) - - } - // set validators and delegations - stakingGenesis := stakingtypes.NewGenesisState(stakingtypes.DefaultParams(), validators, delegations) - genesisState[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(stakingGenesis) - - totalSupply := sdk.NewCoins() - for _, b := range balances { - // add genesis acc tokens to total supply - totalSupply = totalSupply.Add(b.Coins...) - } - - for range delegations { - // add delegated tokens to total supply - totalSupply = totalSupply.Add(sdk.NewCoin(sdk.DefaultBondDenom, bondAmt)) - } - - // add bonded amount to bonded pool module account - balances = append(balances, banktypes.Balance{ - Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(), - Coins: sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, bondAmt)}, - }) - - // update total supply - bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{}, []banktypes.SendEnabled{}) - genesisState[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(bankGenesis) - - return genesisState -} - -// SetupWithGenesisAccounts initializes a new SimApp with the provided genesis -// accounts and possible balances. -func SetupWithGenesisAccounts(genAccs []authtypes.GenesisAccount, balances ...banktypes.Balance) *SimApp { - app, genesisState := setup(true, 0) - authGenesis := authtypes.NewGenesisState(authtypes.DefaultParams(), genAccs) - genesisState[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(authGenesis) - - totalSupply := sdk.NewCoins() - for _, b := range balances { - totalSupply = totalSupply.Add(b.Coins...) - } - - bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{}, []banktypes.SendEnabled{}) - genesisState[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(bankGenesis) - - stateBytes, err := json.MarshalIndent(genesisState, "", " ") - if err != nil { - panic(err) - } - - app.InitChain( - abci.RequestInitChain{ - Validators: []abci.ValidatorUpdate{}, - ConsensusParams: DefaultConsensusParams, - AppStateBytes: stateBytes, - }, - ) - - app.Commit() - app.BeginBlock(abci.RequestBeginBlock{Header: tmproto.Header{Height: app.LastBlockHeight() + 1}}) - - return app -} - -// SignAndDeliver signs and delivers a transaction. No simulation occurs as the -// ibc testing package causes checkState and deliverState to diverge in block time. -// -// CONTRACT: BeginBlock must be called before this function. -func SignAndDeliver( - t *testing.T, txCfg client.TxConfig, app *bam.BaseApp, _ tmproto.Header, msgs []sdk.Msg, - chainID string, accNums, accSeqs []uint64, _, expPass bool, priv ...cryptotypes.PrivKey, -) (sdk.GasInfo, *sdk.Result, error) { - t.Helper() - tx, err := simtestutil.GenSignedMockTx( - rand.New(rand.NewSource(time.Now().UnixNano())), - txCfg, - msgs, - sdk.Coins{sdk.NewInt64Coin(sdk.DefaultBondDenom, 0)}, - simtestutil.DefaultGenTxGas, - chainID, - accNums, - accSeqs, - priv..., - ) - require.NoError(t, err) - - // Simulate a sending a transaction - gInfo, res, err := app.SimDeliver(txCfg.TxEncoder(), tx) - - if expPass { - require.NoError(t, err) - require.NotNil(t, res) - } else { - require.Error(t, err) - require.Nil(t, res) - } - - return gInfo, res, err -} diff --git a/app/ibctesting/simapp/types.go b/app/ibctesting/simapp/types.go deleted file mode 100644 index ae07721f2..000000000 --- a/app/ibctesting/simapp/types.go +++ /dev/null @@ -1,43 +0,0 @@ -package simapp - -import ( - abci "github.com/cometbft/cometbft/abci/types" - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/server/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" -) - -// App implements the common methods for a Cosmos SDK-based application -// specific blockchain. -type App interface { - // The assigned name of the app. - Name() string - - // The application types codec. - // NOTE: This shoult be sealed before being returned. - LegacyAmino() *codec.LegacyAmino - - // Application updates every begin block. - BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock - - // Application updates every end block. - EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock - - // Application update at chain (i.e app) initialization. - InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain - - // Loads the app at a given height. - LoadHeight(height int64) error - - // Exports the state of the application for a genesis file. - ExportAppStateAndValidators( - forZeroHeight bool, jailAllowedAddrs []string, - ) (types.ExportedApp, error) - - // All the registered module account addreses. - ModuleAccountAddrs() map[string]bool - - // Helper for the simulation framework. - SimulationManager() *module.SimulationManager -} diff --git a/app/ibctesting/simapp/upgrades/upgrades.go b/app/ibctesting/simapp/upgrades/upgrades.go deleted file mode 100644 index adc81349b..000000000 --- a/app/ibctesting/simapp/upgrades/upgrades.go +++ /dev/null @@ -1,23 +0,0 @@ -package upgrades - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" -) - -const ( - // DefaultUpgradeName is the default upgrade name used for upgrade tests which do not require special handling. - DefaultUpgradeName = "normal upgrade" -) - -// CreateDefaultUpgradeHandler creates an upgrade handler which can be used for regular upgrade tests -// that do not require special logic -func CreateDefaultUpgradeHandler( - mm *module.Manager, - configurator module.Configurator, -) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - return mm.RunMigrations(ctx, configurator, vm) - } -} diff --git a/app/ibctesting/simapp/upgrades/v6/upgrades.go b/app/ibctesting/simapp/upgrades/v6/upgrades.go deleted file mode 100644 index 953bccf37..000000000 --- a/app/ibctesting/simapp/upgrades/v6/upgrades.go +++ /dev/null @@ -1,36 +0,0 @@ -package v6 - -import ( - "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - - v6 "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/migrations/v6" -) - -const ( - // UpgradeName defines the on-chain upgrade name for the SimApp v6 upgrade. - UpgradeName = "v6" -) - -// CreateUpgradeHandler creates an upgrade handler for the v6 SimApp upgrade. -// NOTE: The v6.MigrateICS27ChannelCapabiliity function can be omitted if chains do not yet implement an ICS27 controller module -func CreateUpgradeHandler( - mm *module.Manager, - configurator module.Configurator, - cdc codec.BinaryCodec, - capabilityStoreKey *storetypes.KVStoreKey, - capabilityKeeper *capabilitykeeper.Keeper, - moduleName string, -) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - if err := v6.MigrateICS27ChannelCapability(ctx, cdc, capabilityStoreKey, capabilityKeeper, moduleName); err != nil { - return nil, err - } - - return mm.RunMigrations(ctx, configurator, vm) - } -} diff --git a/app/ibctesting/simapp/upgrades/v7/upgrades.go b/app/ibctesting/simapp/upgrades/v7/upgrades.go deleted file mode 100644 index 4621c0633..000000000 --- a/app/ibctesting/simapp/upgrades/v7/upgrades.go +++ /dev/null @@ -1,42 +0,0 @@ -package v7 - -import ( - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - consensusparamskeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" - paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" - paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - - clientkeeper "github.com/cosmos/ibc-go/v7/modules/core/02-client/keeper" - ibctmmigrations "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint/migrations" -) - -const ( - // UpgradeName defines the on-chain upgrade name for the SimApp v7 upgrade. - UpgradeName = "v7" -) - -// CreateUpgradeHandler creates an upgrade handler for the v7 SimApp upgrade. -func CreateUpgradeHandler( - mm *module.Manager, - configurator module.Configurator, - cdc codec.BinaryCodec, - clientKeeper clientkeeper.Keeper, - consensusParamsKeeper consensusparamskeeper.Keeper, - paramsKeeper paramskeeper.Keeper, -) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - // OPTIONAL: prune expired tendermint consensus states to save storage space - if _, err := ibctmmigrations.PruneExpiredConsensusStates(ctx, cdc, clientKeeper); err != nil { - return nil, err - } - - legacyBaseAppSubspace := paramsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(paramstypes.ConsensusParamsKeyTable()) - baseapp.MigrateParams(ctx, legacyBaseAppSubspace, &consensusParamsKeeper) - - return mm.RunMigrations(ctx, configurator, vm) - } -} diff --git a/app/ibctesting/simapp/utils.go b/app/ibctesting/simapp/utils.go deleted file mode 100644 index 70b354e17..000000000 --- a/app/ibctesting/simapp/utils.go +++ /dev/null @@ -1,129 +0,0 @@ -package simapp - -import ( - "encoding/json" - "fmt" - "os" - - dbm "github.com/cometbft/cometbft-db" - "github.com/cometbft/cometbft/libs/log" - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/kv" - "github.com/cosmos/cosmos-sdk/types/module" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" -) - -// SetupSimulation creates the config, db (levelDB), temporary directory and logger for -// the simulation tests. If `FlagEnabledValue` is false it skips the current test. -// Returns error on an invalid db intantiation or temp dir creation. -func SetupSimulation(dirPrefix, dbName string) (simtypes.Config, dbm.DB, string, log.Logger, bool, error) { - if !FlagEnabledValue { - return simtypes.Config{}, nil, "", nil, true, nil - } - - config := NewConfigFromFlags() - config.ChainID = "simulation-app" - - var logger log.Logger - if FlagVerboseValue { - logger = log.TestingLogger() - } else { - logger = log.NewNopLogger() - } - - dir, err := os.MkdirTemp("", dirPrefix) - if err != nil { - return simtypes.Config{}, nil, "", nil, false, err - } - - db, err := dbm.NewDB(dbName, dbm.BackendType(config.DBBackend), dir) - if err != nil { - return simtypes.Config{}, nil, "", nil, false, err - } - - return config, db, dir, logger, false, nil -} - -// SimulationOperations retrieves the simulation params from the provided file path -// and returns all the modules weighted operations -func SimulationOperations(app App, cdc codec.JSONCodec, config simtypes.Config) []simtypes.WeightedOperation { - simState := module.SimulationState{ - AppParams: make(simtypes.AppParams), - Cdc: cdc, - } - - if config.ParamsFile != "" { - bz, err := os.ReadFile(config.ParamsFile) - if err != nil { - panic(err) - } - - err = json.Unmarshal(bz, &simState.AppParams) - if err != nil { - panic(err) - } - } - - //nolint: staticcheck // SA1019: app.SimulationManager().GetProposalContents is deprecated: Use GetProposalMsgs instead. GetProposalContents returns each module's proposal content generator function with their default operation weight and key. - simState.LegacyProposalContents = app.SimulationManager().GetProposalContents(simState) - return app.SimulationManager().WeightedOperations(simState) -} - -// CheckExportSimulation exports the app state and simulation parameters to JSON -// if the export paths are defined. -func CheckExportSimulation( - app App, config simtypes.Config, params simtypes.Params, -) error { - if config.ExportStatePath != "" { - fmt.Println("exporting app state...") - exported, err := app.ExportAppStateAndValidators(false, nil) - if err != nil { - return err - } - - if err := os.WriteFile(config.ExportStatePath, []byte(exported.AppState), 0o600); err != nil { - return err - } - } - - if config.ExportParamsPath != "" { - fmt.Println("exporting simulation params...") - paramsBz, err := json.MarshalIndent(params, "", " ") - if err != nil { - return err - } - - if err := os.WriteFile(config.ExportParamsPath, paramsBz, 0o600); err != nil { - return err - } - } - return nil -} - -// PrintStats prints the corresponding statistics from the app DB. -func PrintStats(db dbm.DB) { - fmt.Println("\nLevelDB Stats") - fmt.Println(db.Stats()["leveldb.stats"]) - fmt.Println("LevelDB cached block size", db.Stats()["leveldb.cachedblock"]) -} - -// GetSimulationLog unmarshals the KVPair's Value to the corresponding type based on the -// each's module store key and the prefix bytes of the KVPair's key. -func GetSimulationLog(storeName string, sdr sdk.StoreDecoderRegistry, kvAs, kvBs []kv.Pair) (log string) { - for i := 0; i < len(kvAs); i++ { - if len(kvAs[i].Value) == 0 && len(kvBs[i].Value) == 0 { - // skip if the value doesn't have any bytes - continue - } - - decoder, ok := sdr[storeName] - if ok { - log += decoder(kvAs[i], kvBs[i]) - } else { - log += fmt.Sprintf("store A %X => %X\nstore B %X => %X\n", kvAs[i].Key, kvAs[i].Value, kvBs[i].Key, kvBs[i].Value) - } - } - - return log -} diff --git a/app/ibctesting/simapp/utils_test.go b/app/ibctesting/simapp/utils_test.go deleted file mode 100644 index 7389c3a23..000000000 --- a/app/ibctesting/simapp/utils_test.go +++ /dev/null @@ -1,59 +0,0 @@ -package simapp - -import ( - "fmt" - "testing" - - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/std" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/kv" - "github.com/cosmos/cosmos-sdk/types/module" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/stretchr/testify/require" -) - -func makeCodec(bm module.BasicManager) *codec.LegacyAmino { - cdc := codec.NewLegacyAmino() - - bm.RegisterLegacyAminoCodec(cdc) - std.RegisterLegacyAminoCodec(cdc) - - return cdc -} - -func TestGetSimulationLog(t *testing.T) { - cdc := makeCodec(ModuleBasics) - - decoders := make(sdk.StoreDecoderRegistry) - decoders[authtypes.StoreKey] = func(kvAs, kvBs kv.Pair) string { return "10" } - - tests := []struct { - store string - kvPairs []kv.Pair - expectedLog string - }{ - { - "Empty", - []kv.Pair{{}}, - "", - }, - { - authtypes.StoreKey, - []kv.Pair{{Key: authtypes.GlobalAccountNumberKey, Value: cdc.MustMarshal(uint64(10))}}, - "10", - }, - { - "OtherStore", - []kv.Pair{{Key: []byte("key"), Value: []byte("value")}}, - fmt.Sprintf("store A %X => %X\nstore B %X => %X\n", []byte("key"), []byte("value"), []byte("key"), []byte("value")), - }, - } - - for _, tt := range tests { - tt := tt - t.Run(tt.store, func(t *testing.T) { - require.Equal(t, tt.expectedLog, GetSimulationLog(tt.store, decoders, tt.kvPairs, tt.kvPairs), tt.store) - }) - } -} diff --git a/app/ibctesting/value.go b/app/ibctesting/value.go index ed2efd189..acd77b071 100644 --- a/app/ibctesting/value.go +++ b/app/ibctesting/value.go @@ -7,13 +7,15 @@ package ibctesting import ( "time" + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" - ibctm "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - "github.com/cosmos/ibc-go/v7/testing/mock" - "github.com/cosmos/ibc-go/v7/testing/simapp" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + connectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" + ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" + "github.com/cosmos/ibc-go/v8/testing/mock" + "github.com/cosmos/ibc-go/v8/testing/simapp" ) const ( @@ -48,12 +50,12 @@ var ( // DefaultTrustLevel sets params variables used to create a TM client DefaultTrustLevel = ibctm.DefaultTrustLevel - TestCoin = sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100)) + TestCoin = sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(100)) TestCoins = sdk.NewCoins(TestCoin) UpgradePath = []string{"upgrade", "upgradedIBCState"} - ConnectionVersion = connectiontypes.ExportedVersionsToProto(connectiontypes.GetCompatibleVersions())[0] + ConnectionVersion = connectiontypes.GetCompatibleVersions()[0] MockAcknowledgement = mock.MockAcknowledgement.Acknowledgement() MockPacketData = mock.MockPacketData diff --git a/app/ibctesting/wasm.go b/app/ibctesting/wasm.go index 55e567049..dda99a1ff 100644 --- a/app/ibctesting/wasm.go +++ b/app/ibctesting/wasm.go @@ -1,25 +1,19 @@ package ibctesting import ( - "fmt" - "time" - - "github.com/stretchr/testify/require" - - tmtypes "github.com/cometbft/cometbft/types" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - wasmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/08-wasm/types" + wasmtypes "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" ) // ConstructUpdateWasmClientHeader will construct a valid 08-wasm Header with a zero height // to update the light client on the source chain. -func (chain *TestChain) ConstructUpdateWasmClientHeader(counterparty *TestChain, clientID string) (*wasmtypes.Header, error) { +func (chain *TestChain) ConstructUpdateWasmClientHeader(counterparty *TestChain, clientID string) (*wasmtypes.ClientMessage, error) { return chain.ConstructUpdateWasmClientHeaderWithTrustedHeight(counterparty, clientID, clienttypes.ZeroHeight()) } // ConstructUpdateWasmClientHeaderWithTrustedHeight will construct a valid 08-wasm Header // to update the light client on the source chain. -func (chain *TestChain) ConstructUpdateWasmClientHeaderWithTrustedHeight(counterparty *TestChain, clientID string, trustedHeight clienttypes.Height) (*wasmtypes.Header, error) { +func (chain *TestChain) ConstructUpdateWasmClientHeaderWithTrustedHeight(counterparty *TestChain, clientID string, trustedHeight clienttypes.Height) (*wasmtypes.ClientMessage, error) { tmHeader, err := chain.ConstructUpdateTMClientHeaderWithTrustedHeight(counterparty, clientID, trustedHeight) if err != nil { return nil, err @@ -30,26 +24,21 @@ func (chain *TestChain) ConstructUpdateWasmClientHeaderWithTrustedHeight(counter return nil, err } - height, ok := tmHeader.GetHeight().(clienttypes.Height) - if !ok { - return nil, fmt.Errorf("error casting exported height to clienttypes height") - } - wasmHeader := wasmtypes.Header{ - Data: tmWasmHeaderData, - Height: height, + wasmHeader := wasmtypes.ClientMessage{ + Data: tmWasmHeaderData, } return &wasmHeader, nil } -func (chain *TestChain) CreateWasmClientHeader(chainID string, blockHeight int64, trustedHeight clienttypes.Height, timestamp time.Time, tmValSet, _, tmTrustedVals *tmtypes.ValidatorSet, signers []tmtypes.PrivValidator) *wasmtypes.Header { - tmHeader := chain.CreateTMClientHeader(chainID, blockHeight, trustedHeight, timestamp, tmValSet, tmTrustedVals, signers) - tmWasmHeaderData, err := chain.Codec.MarshalInterface(tmHeader) - require.NoError(chain.t, err) - height, ok := tmHeader.GetHeight().(clienttypes.Height) - require.True(chain.t, ok) - return &wasmtypes.Header{ - Data: tmWasmHeaderData, - Height: height, - } -} +// func (chain *TestChain) CreateWasmClientHeader(chainID string, blockHeight int64, trustedHeight clienttypes.Height, timestamp time.Time, tmValSet, _, tmTrustedVals *tmtypes.ValidatorSet, signers []tmtypes.PrivValidator) *wasmtypes.Header { +// tmHeader := chain.CreateTMClientHeader(chainID, blockHeight, trustedHeight, timestamp, tmValSet, tmTrustedVals, signers) +// tmWasmHeaderData, err := chain.Codec.MarshalInterface(tmHeader) +// require.NoError(chain.t, err) +// height, ok := tmHeader.GetHeight().(clienttypes.Height) +// require.True(chain.t, ok) +// return &wasmtypes.Header{ +// Data: tmWasmHeaderData, +// Height: height, +// } +//} diff --git a/app/keepers/keepers.go b/app/keepers/keepers.go index 588fea85f..7d5628563 100644 --- a/app/keepers/keepers.go +++ b/app/keepers/keepers.go @@ -2,20 +2,33 @@ package keepers import ( "fmt" + "math" "path/filepath" "strings" + "github.com/cosmos/cosmos-sdk/x/params" + + circuitkeeper "cosmossdk.io/x/circuit/keeper" + circuittypes "cosmossdk.io/x/circuit/types" + icacontrollertypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller/types" + ibcconnectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" + + "cosmossdk.io/log" + "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" - porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" + authcodec "github.com/cosmos/cosmos-sdk/x/auth/codec" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper" crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" @@ -23,11 +36,11 @@ import ( distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - evidencekeeper "github.com/cosmos/cosmos-sdk/x/evidence/keeper" - evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" + evidencekeeper "cosmossdk.io/x/evidence/keeper" + evidencetypes "cosmossdk.io/x/evidence/types" - "github.com/cosmos/cosmos-sdk/x/feegrant" - feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper" + "cosmossdk.io/x/feegrant" + feegrantkeeper "cosmossdk.io/x/feegrant/keeper" govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" @@ -37,7 +50,6 @@ import ( "github.com/cosmos/cosmos-sdk/x/group" groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper" - "github.com/cosmos/cosmos-sdk/x/params" paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" paramproposal "github.com/cosmos/cosmos-sdk/x/params/types/proposal" @@ -48,35 +60,28 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" customstaking "github.com/notional-labs/composable/v6/custom/staking/keeper" - "github.com/cosmos/cosmos-sdk/x/upgrade" - upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + upgradekeeper "cosmossdk.io/x/upgrade/keeper" + upgradetypes "cosmossdk.io/x/upgrade/types" authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" - icahost "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host" - icahostkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/keeper" - icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" - "github.com/cosmos/ibc-go/v7/modules/apps/transfer" - - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - ibcclient "github.com/cosmos/ibc-go/v7/modules/core/02-client" - ibcclienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - ibchost "github.com/cosmos/ibc-go/v7/modules/core/exported" - ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" + icahost "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host" + icahostkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/keeper" + icahosttypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/types" + "github.com/cosmos/ibc-go/v8/modules/apps/transfer" + + icq "github.com/cosmos/ibc-apps/modules/async-icq/v8" + icqkeeper "github.com/cosmos/ibc-apps/modules/async-icq/v8/keeper" + icqtypes "github.com/cosmos/ibc-apps/modules/async-icq/v8/types" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" customibctransferkeeper "github.com/notional-labs/composable/v6/custom/ibc-transfer/keeper" - icq "github.com/strangelove-ventures/async-icq/v7" - icqkeeper "github.com/strangelove-ventures/async-icq/v7/keeper" - icqtypes "github.com/strangelove-ventures/async-icq/v7/types" custombankkeeper "github.com/notional-labs/composable/v6/custom/bank/keeper" - router "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward" - routerkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/keeper" - routertypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types" - - alliancemodule "github.com/terra-money/alliance/x/alliance" - alliancemodulekeeper "github.com/terra-money/alliance/x/alliance/keeper" - alliancemoduletypes "github.com/terra-money/alliance/x/alliance/types" + pfm "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward" + pfmkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/keeper" + pfmtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/types" transfermiddleware "github.com/notional-labs/composable/v6/x/transfermiddleware" transfermiddlewarekeeper "github.com/notional-labs/composable/v6/x/transfermiddleware/keeper" @@ -95,12 +100,15 @@ import ( mintkeeper "github.com/notional-labs/composable/v6/x/mint/keeper" minttypes "github.com/notional-labs/composable/v6/x/mint/types" + storetypes "cosmossdk.io/store/types" "github.com/CosmWasm/wasmd/x/wasm" wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" servertypes "github.com/cosmos/cosmos-sdk/server/types" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - wasm08Keeper "github.com/cosmos/ibc-go/v7/modules/light-clients/08-wasm/keeper" - wasm08types "github.com/cosmos/ibc-go/v7/modules/light-clients/08-wasm/types" + wasm08Keeper "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/keeper" + wasm08types "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types" + + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + wasmvm "github.com/CosmWasm/wasmvm" ibc_hooks "github.com/notional-labs/composable/v6/x/ibc-hooks" ibchookskeeper "github.com/notional-labs/composable/v6/x/ibc-hooks/keeper" @@ -113,7 +121,8 @@ import ( ) const ( - authorityAddress = "pica10556m38z4x6pqalr9rl5ytf3cff8q46nf36090" // convert from: centauri10556m38z4x6pqalr9rl5ytf3cff8q46nk85k9m + AccountAddressPrefix = "pica" + authorityAddress = "pica10556m38z4x6pqalr9rl5ytf3cff8q46nf36090" // convert from: centauri10556m38z4x6pqalr9rl5ytf3cff8q46nk85k9m ) type AppKeepers struct { @@ -143,7 +152,7 @@ type AppKeepers struct { AuthzKeeper authzkeeper.Keeper GroupKeeper groupkeeper.Keeper Wasm08Keeper wasm08Keeper.Keeper // TODO: use this name ? - WasmKeeper wasm.Keeper + WasmKeeper wasmkeeper.Keeper IBCHooksKeeper *ibchookskeeper.Keeper Ics20WasmHooks *ibc_hooks.WasmHooks HooksICS4Wrapper ibc_hooks.ICS4Middleware @@ -157,15 +166,17 @@ type AppKeepers struct { // this line is used by starport scaffolding # stargate/app/keeperDeclaration TransferMiddlewareKeeper transfermiddlewarekeeper.Keeper TxBoundaryKeepper txBoundaryKeeper.Keeper - RouterKeeper *routerkeeper.Keeper + PfmKeeper *pfmkeeper.Keeper RatelimitKeeper ratelimitmodulekeeper.Keeper - AllianceKeeper alliancemodulekeeper.Keeper StakingMiddlewareKeeper stakingmiddleware.Keeper IbcTransferMiddlewareKeeper ibctransfermiddleware.Keeper + + CircuitKeeper circuitkeeper.Keeper } // InitNormalKeepers initializes all 'normal' keepers. func (appKeepers *AppKeepers) InitNormalKeepers( + logger log.Logger, appCodec codec.Codec, cdc *codec.LegacyAmino, bApp *baseapp.BaseApp, @@ -174,28 +185,32 @@ func (appKeepers *AppKeepers) InitNormalKeepers( skipUpgradeHeights map[int64]bool, homePath string, appOpts servertypes.AppOptions, - wasmOpts []wasm.Option, - enabledProposals []wasm.ProposalType, ) { + govModAddress := authtypes.NewModuleAddress(govtypes.ModuleName).String() // add keepers appKeepers.AccountKeeper = authkeeper.NewAccountKeeper( - appCodec, appKeepers.keys[authtypes.StoreKey], authtypes.ProtoBaseAccount, maccPerms, - sdk.GetConfig().GetBech32AccountAddrPrefix(), authtypes.NewModuleAddress(govtypes.ModuleName).String(), + appCodec, runtime.NewKVStoreService(appKeepers.keys[authtypes.StoreKey]), authtypes.ProtoBaseAccount, maccPerms, authcodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()), AccountAddressPrefix, govModAddress, ) appKeepers.BankKeeper = custombankkeeper.NewBaseKeeper( - appCodec, appKeepers.keys[banktypes.StoreKey], appKeepers.AccountKeeper, appKeepers.BlacklistedModuleAccountAddrs(maccPerms), &appKeepers.TransferMiddlewareKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), + logger, + appCodec, + runtime.NewKVStoreService(appKeepers.keys[banktypes.StoreKey]), + appKeepers.AccountKeeper, + appKeepers.BlacklistedModuleAccountAddrs(maccPerms), + &appKeepers.TransferMiddlewareKeeper, + govModAddress, ) appKeepers.AuthzKeeper = authzkeeper.NewKeeper( - appKeepers.keys[authzkeeper.StoreKey], + runtime.NewKVStoreService(appKeepers.keys[authzkeeper.StoreKey]), appCodec, bApp.MsgServiceRouter(), appKeepers.AccountKeeper, ) - appKeepers.StakingMiddlewareKeeper = stakingmiddleware.NewKeeper(appCodec, appKeepers.keys[stakingmiddlewaretypes.StoreKey], authtypes.NewModuleAddress(govtypes.ModuleName).String()) - appKeepers.IbcTransferMiddlewareKeeper = ibctransfermiddleware.NewKeeper(appCodec, appKeepers.keys[ibctransfermiddlewaretypes.StoreKey], authtypes.NewModuleAddress(govtypes.ModuleName).String(), + appKeepers.StakingMiddlewareKeeper = stakingmiddleware.NewKeeper(appCodec, appKeepers.keys[stakingmiddlewaretypes.StoreKey], govModAddress) + appKeepers.IbcTransferMiddlewareKeeper = ibctransfermiddleware.NewKeeper(appCodec, appKeepers.keys[ibctransfermiddlewaretypes.StoreKey], govModAddress, []string{ "pica1ay9y5uns9khw2kzaqr3r33v2pkuptfnnunlt5x", "pica14lz7gaw92valqjearnye4shex7zg2p05yfguqm", @@ -204,25 +219,40 @@ func (appKeepers *AppKeepers) InitNormalKeepers( }) appKeepers.StakingKeeper = customstaking.NewKeeper( - appCodec, appKeepers.keys[stakingtypes.StoreKey], appKeepers.AccountKeeper, appKeepers.BankKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), &appKeepers.StakingMiddlewareKeeper, + appCodec, + runtime.NewKVStoreService(appKeepers.keys[stakingtypes.StoreKey]), + appKeepers.AccountKeeper, + appKeepers.BankKeeper, + govModAddress, + &appKeepers.StakingMiddlewareKeeper, + authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()), + authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()), ) appKeepers.MintKeeper = mintkeeper.NewKeeper( appCodec, appKeepers.keys[minttypes.StoreKey], appKeepers.StakingKeeper, - appKeepers.AccountKeeper, appKeepers.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String(), + appKeepers.AccountKeeper, appKeepers.BankKeeper, authtypes.FeeCollectorName, govModAddress, ) appKeepers.DistrKeeper = distrkeeper.NewKeeper( - appCodec, appKeepers.keys[distrtypes.StoreKey], appKeepers.AccountKeeper, appKeepers.BankKeeper, - appKeepers.StakingKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String(), + appCodec, runtime.NewKVStoreService(appKeepers.keys[distrtypes.StoreKey]), appKeepers.AccountKeeper, appKeepers.BankKeeper, + appKeepers.StakingKeeper, authtypes.FeeCollectorName, govModAddress, ) appKeepers.StakingKeeper.RegisterKeepers(appKeepers.DistrKeeper, appKeepers.MintKeeper) appKeepers.SlashingKeeper = slashingkeeper.NewKeeper( - appCodec, cdc, appKeepers.keys[slashingtypes.StoreKey], appKeepers.StakingKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), + appCodec, cdc, runtime.NewKVStoreService(appKeepers.keys[slashingtypes.StoreKey]), appKeepers.StakingKeeper, govModAddress, + ) + + appKeepers.CircuitKeeper = circuitkeeper.NewKeeper( + appCodec, + runtime.NewKVStoreService(appKeepers.keys[circuittypes.StoreKey]), + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + appKeepers.AccountKeeper.AddressCodec(), ) + bApp.SetCircuitBreaker(&appKeepers.CircuitKeeper) - appKeepers.CrisisKeeper = crisiskeeper.NewKeeper(appCodec, appKeepers.keys[crisistypes.StoreKey], - invCheckPeriod, appKeepers.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String(), + appKeepers.CrisisKeeper = crisiskeeper.NewKeeper(appCodec, runtime.NewKVStoreService(appKeepers.keys[crisistypes.StoreKey]), + invCheckPeriod, appKeepers.BankKeeper, authtypes.FeeCollectorName, govModAddress, appKeepers.AccountKeeper.AddressCodec(), ) groupConfig := group.DefaultConfig() @@ -238,51 +268,38 @@ func (appKeepers *AppKeepers) InitNormalKeepers( groupConfig, ) - appKeepers.FeeGrantKeeper = feegrantkeeper.NewKeeper(appCodec, appKeepers.keys[feegrant.StoreKey], appKeepers.AccountKeeper) - appKeepers.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, appKeepers.keys[upgradetypes.StoreKey], appCodec, homePath, bApp, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + appKeepers.FeeGrantKeeper = feegrantkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(appKeepers.keys[feegrant.StoreKey]), appKeepers.AccountKeeper) + appKeepers.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, runtime.NewKVStoreService(appKeepers.keys[upgradetypes.StoreKey]), appCodec, homePath, bApp, govModAddress) - appKeepers.AllianceKeeper = alliancemodulekeeper.NewKeeper( - appCodec, - appKeepers.keys[alliancemoduletypes.StoreKey], - appKeepers.GetSubspace(alliancemoduletypes.ModuleName), - appKeepers.AccountKeeper, - appKeepers.BankKeeper, - appKeepers.StakingKeeper, - appKeepers.DistrKeeper, - ) - - appKeepers.BankKeeper.RegisterKeepers(appKeepers.AllianceKeeper, appKeepers.StakingKeeper) + appKeepers.BankKeeper.RegisterKeepers(appKeepers.AccountKeeper, appKeepers.StakingKeeper) // register the staking hooks // NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks appKeepers.StakingKeeper.SetHooks( - stakingtypes.NewMultiStakingHooks(appKeepers.DistrKeeper.Hooks(), appKeepers.SlashingKeeper.Hooks(), appKeepers.AllianceKeeper.StakingHooks()), + stakingtypes.NewMultiStakingHooks(appKeepers.DistrKeeper.Hooks(), appKeepers.SlashingKeeper.Hooks()), ) // ... other modules keepers // Create IBC Keeper appKeepers.IBCKeeper = ibckeeper.NewKeeper( - appCodec, appKeepers.keys[ibchost.StoreKey], appKeepers.GetSubspace(ibchost.ModuleName), appKeepers.StakingKeeper, appKeepers.UpgradeKeeper, appKeepers.ScopedIBCKeeper, + appCodec, + appKeepers.keys[ibcexported.StoreKey], + appKeepers.GetSubspace(ibcexported.ModuleName), + appKeepers.StakingKeeper, + appKeepers.UpgradeKeeper, + appKeepers.ScopedIBCKeeper, + govModAddress, ) - - appKeepers.Wasm08Keeper = wasm08Keeper.NewKeeper(appCodec, appKeepers.keys[wasm08types.StoreKey], authorityAddress, homePath, &appKeepers.IBCKeeper.ClientKeeper) - // ICA Host keeper appKeepers.ICAHostKeeper = icahostkeeper.NewKeeper( appCodec, appKeepers.keys[icahosttypes.StoreKey], appKeepers.GetSubspace(icahosttypes.SubModuleName), appKeepers.IBCKeeper.ChannelKeeper, - appKeepers.IBCKeeper.ChannelKeeper, &appKeepers.IBCKeeper.PortKeeper, - appKeepers.AccountKeeper, appKeepers.ScopedICAHostKeeper, bApp.MsgServiceRouter(), + appKeepers.IBCKeeper.ChannelKeeper, appKeepers.IBCKeeper.PortKeeper, + appKeepers.AccountKeeper, appKeepers.ScopedICAHostKeeper, bApp.MsgServiceRouter(), govModAddress, ) icaHostStack := icahost.NewIBCModule(appKeepers.ICAHostKeeper) - // Create Transfer Keepers - // * SendPacket. Originates from the transferKeeper and goes up the stack: - // transferKeeper.SendPacket -> transfermiddleware.SendPacket -> ibc_rate_limit.SendPacket -> ibc_hooks.SendPacket -> channel.SendPacket - // * RecvPacket, message that originates from core IBC and goes down to app, the flow is the other way - // channel.RecvPacket -> ibc_hooks.OnRecvPacket -> ibc_rate_limit.OnRecvPacket -> forward.OnRecvPacket -> transfermiddleware_OnRecvPacket -> transfer.OnRecvPacket - // hooksKeeper := ibchookskeeper.NewKeeper( appKeepers.keys[ibchookstypes.StoreKey], ) @@ -304,25 +321,25 @@ func (appKeepers *AppKeepers) InitNormalKeepers( &appKeepers.TransferKeeper, appKeepers.BankKeeper, &appKeepers.IbcTransferMiddlewareKeeper, - authorityAddress, + govModAddress, ) appKeepers.TxBoundaryKeepper = txBoundaryKeeper.NewKeeper( appCodec, appKeepers.keys[txBoundaryTypes.StoreKey], - authorityAddress, + govModAddress, ) - appKeepers.RouterKeeper = routerkeeper.NewKeeper( + appKeepers.PfmKeeper = pfmkeeper.NewKeeper( appCodec, - appKeepers.keys[routertypes.StoreKey], - appKeepers.GetSubspace(routertypes.ModuleName), + appKeepers.keys[pfmtypes.StoreKey], appKeepers.TransferKeeper, appKeepers.IBCKeeper.ChannelKeeper, &appKeepers.DistrKeeper, appKeepers.BankKeeper, - appKeepers.TransferMiddlewareKeeper, appKeepers.IBCKeeper.ChannelKeeper, + appKeepers.TransferMiddlewareKeeper, + govModAddress, ) appKeepers.TransferKeeper = customibctransferkeeper.NewKeeper( @@ -330,15 +347,15 @@ func (appKeepers *AppKeepers) InitNormalKeepers( appKeepers.GetSubspace(ibctransfertypes.ModuleName), &appKeepers.TransferMiddlewareKeeper, // ICS4Wrapper appKeepers.IBCKeeper.ChannelKeeper, - &appKeepers.IBCKeeper.PortKeeper, + appKeepers.IBCKeeper.PortKeeper, appKeepers.AccountKeeper, appKeepers.BankKeeper, appKeepers.ScopedTransferKeeper, &appKeepers.IbcTransferMiddlewareKeeper, &appKeepers.BankKeeper, + govModAddress, ) - - appKeepers.RouterKeeper.SetTransferKeeper(appKeepers.TransferKeeper) + appKeepers.PfmKeeper.SetTransferKeeper(appKeepers.TransferKeeper) appKeepers.RatelimitKeeper = *ratelimitmodulekeeper.NewKeeper( appCodec, @@ -349,39 +366,51 @@ func (appKeepers *AppKeepers) InitNormalKeepers( // TODO: Implement ICS4Wrapper in Records and pass records keeper here &appKeepers.HooksICS4Wrapper, // ICS4Wrapper appKeepers.TransferMiddlewareKeeper, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), + govModAddress, ) - transferIBCModule := transfer.NewIBCModule(appKeepers.TransferKeeper.Keeper) scopedICQKeeper := appKeepers.CapabilityKeeper.ScopeToModule(icqtypes.ModuleName) appKeepers.ICQKeeper = icqkeeper.NewKeeper( - appCodec, appKeepers.keys[icqtypes.StoreKey], appKeepers.GetSubspace(icqtypes.ModuleName), - appKeepers.IBCKeeper.ChannelKeeper, appKeepers.IBCKeeper.ChannelKeeper, &appKeepers.IBCKeeper.PortKeeper, - scopedICQKeeper, bApp, + appCodec, + appKeepers.keys[icqtypes.StoreKey], + appKeepers.IBCKeeper.ChannelKeeper, + appKeepers.IBCKeeper.ChannelKeeper, + appKeepers.IBCKeeper.PortKeeper, + scopedICQKeeper, bApp.GRPCQueryRouter(), govModAddress, ) icqIBCModule := icq.NewIBCModule(appKeepers.ICQKeeper) + + // Create Transfer Keepers + // * SendPacket. Originates from the transferKeeper and goes up the stack: + // transferKeeper.SendPacket -> transfermiddleware.SendPacket -> ibc_rate_limit.SendPacket -> ibc_hooks.SendPacket -> channel.SendPacket + // * RecvPacket, message that originates from core IBC and goes down to app, the flow is the other way + // channel.RecvPacket -> ibc_hooks.OnRecvPacket -> ibc_rate_limit.OnRecvPacket -> forward.OnRecvPacket -> transfermiddleware_OnRecvPacket -> transfer.OnRecvPacket + // + + transferIBCModule := transfer.NewIBCModule(appKeepers.TransferKeeper.Keeper) + transfermiddlewareStack := transfermiddleware.NewIBCMiddleware( transferIBCModule, appKeepers.TransferMiddlewareKeeper, ) - ibcMiddlewareStack := router.NewIBCMiddleware( + ibcMiddlewareStack := pfm.NewIBCMiddleware( transfermiddlewareStack, - appKeepers.RouterKeeper, + appKeepers.PfmKeeper, 0, - routerkeeper.DefaultForwardTransferPacketTimeoutTimestamp, - routerkeeper.DefaultRefundTransferPacketTimeoutTimestamp, + pfmkeeper.DefaultForwardTransferPacketTimeoutTimestamp, + pfmkeeper.DefaultRefundTransferPacketTimeoutTimestamp, ) ratelimitMiddlewareStack := ratelimitmodule.NewIBCMiddleware(appKeepers.RatelimitKeeper, ibcMiddlewareStack) hooksTransferMiddleware := ibc_hooks.NewIBCMiddleware(ratelimitMiddlewareStack, &appKeepers.HooksICS4Wrapper) // Create evidence Keeper for to register the IBC light client misbehaviour evidence route evidenceKeeper := evidencekeeper.NewKeeper( - appCodec, appKeepers.keys[evidencetypes.StoreKey], appKeepers.StakingKeeper, appKeepers.SlashingKeeper, + appCodec, runtime.NewKVStoreService(appKeepers.keys[evidencetypes.StoreKey]), appKeepers.StakingKeeper, appKeepers.SlashingKeeper, appKeepers.AccountKeeper.AddressCodec(), runtime.ProvideCometInfoService(), ) - // If evidence needs to be handled for the app, set routes in router here and seal + // If evidence needs to be handled for the app, set routes in pfm here and seal appKeepers.EvidenceKeeper = *evidenceKeeper wasmDir := filepath.Join(homePath, "wasm") @@ -396,16 +425,32 @@ func (appKeepers *AppKeepers) InitNormalKeepers( // The last arguments can contain custom message handlers, and custom query handlers, // if we want to allow any custom callbacks availableCapabilities := strings.Join(AllCapabilities(), ",") - appKeepers.WasmKeeper = wasm.NewKeeper( + + wasmer, err := wasmvm.NewVM( + wasmDir, + strings.Join(AllCapabilities(), ","), + 32, // default of 32 + false, + 0, + ) + if err != nil { + panic(err) + } + + wasmOpts := []wasmkeeper.Option{ + wasmkeeper.WithWasmEngine(wasmer), + } + + appKeepers.WasmKeeper = wasmkeeper.NewKeeper( appCodec, - appKeepers.keys[wasmtypes.StoreKey], + runtime.NewKVStoreService(appKeepers.keys[wasmtypes.StoreKey]), appKeepers.AccountKeeper, appKeepers.BankKeeper, appKeepers.StakingKeeper, distrkeeper.NewQuerier(appKeepers.DistrKeeper), appKeepers.IBCKeeper.ChannelKeeper, // ISC4 Wrapper: fee IBC middleware appKeepers.IBCKeeper.ChannelKeeper, - &appKeepers.IBCKeeper.PortKeeper, + appKeepers.IBCKeeper.PortKeeper, appKeepers.ScopedWasmKeeper, appKeepers.TransferKeeper, bApp.MsgServiceRouter(), @@ -413,29 +458,45 @@ func (appKeepers *AppKeepers) InitNormalKeepers( wasmDir, wasmConfig, availableCapabilities, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), + govModAddress, wasmOpts..., ) - appKeepers.Ics20WasmHooks.ContractKeeper = &appKeepers.WasmKeeper + wasmDataDir := filepath.Join(homePath, "wasm_client_data") + wasmSupportedFeatures := strings.Join([]string{"storage", "iterator"}, ",") + wasmMemoryLimitMb := uint32(math.Pow(2, 12)) + wasmPrintDebug := true + wasmCacheSizeMb := uint32(math.Pow(2, 8)) + + vm, err := wasmvm.NewVM(wasmDataDir, wasmSupportedFeatures, wasmMemoryLimitMb, wasmPrintDebug, wasmCacheSizeMb) + if err != nil { + panic(err) + } + + // use same VM for wasm + appKeepers.Wasm08Keeper = wasm08Keeper.NewKeeperWithVM( + appCodec, + runtime.NewKVStoreService(appKeepers.keys[wasm08types.StoreKey]), + &appKeepers.IBCKeeper.ClientKeeper, + authorityAddress, + vm, + bApp.GRPCQueryRouter(), + ) + // Register Gov (must be registered after stakeibc) govRouter := govtypesv1beta1.NewRouter() + // Register the proposal types + // Deprecated: Avoid adding new handlers, instead use the new proposal flow + // by granting the governance module the right to execute the message. + // See: https://docs.cosmos.network/main/modules/gov#proposal-messages govRouter.AddRoute(govtypes.RouterKey, govtypesv1beta1.ProposalHandler). - AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(appKeepers.ParamsKeeper)). - // AddRoute(distrtypes.RouterKey, distr.NewCommunityPoolSpendProposalHandler(appKeepers.DistrKeeper)). - AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(appKeepers.UpgradeKeeper)). - AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(appKeepers.IBCKeeper.ClientKeeper)). - AddRoute(alliancemoduletypes.RouterKey, alliancemodule.NewAllianceProposalHandler(appKeepers.AllianceKeeper)) - - // The gov proposal types can be individually enabled - if len(enabledProposals) != 0 { - govRouter.AddRoute(wasm.RouterKey, wasm.NewWasmProposalHandler(appKeepers.WasmKeeper, enabledProposals)) - } + AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(appKeepers.ParamsKeeper)) govKeeper := *govkeeper.NewKeeper( - appCodec, appKeepers.keys[govtypes.StoreKey], appKeepers.AccountKeeper, appKeepers.BankKeeper, - appKeepers.StakingKeeper, bApp.MsgServiceRouter(), govtypes.DefaultConfig(), authtypes.NewModuleAddress(govtypes.ModuleName).String(), + appCodec, runtime.NewKVStoreService(appKeepers.keys[govtypes.StoreKey]), appKeepers.AccountKeeper, appKeepers.BankKeeper, + appKeepers.StakingKeeper, appKeepers.DistrKeeper, bApp.MsgServiceRouter(), govtypes.DefaultConfig(), + govModAddress, ) govKeeper.SetLegacyRouter(govRouter) @@ -449,10 +510,10 @@ func (appKeepers *AppKeepers) InitNormalKeepers( ibcRouter := porttypes.NewRouter() ibcRouter.AddRoute(ibctransfertypes.ModuleName, hooksTransferMiddleware) ibcRouter.AddRoute(icqtypes.ModuleName, icqIBCModule) - ibcRouter.AddRoute(wasm.ModuleName, wasm.NewIBCHandler(appKeepers.WasmKeeper, appKeepers.IBCKeeper.ChannelKeeper, appKeepers.IBCKeeper.ChannelKeeper)) + ibcRouter.AddRoute(wasmtypes.ModuleName, wasm.NewIBCHandler(appKeepers.WasmKeeper, appKeepers.IBCKeeper.ChannelKeeper, appKeepers.IBCKeeper.ChannelKeeper)) ibcRouter.AddRoute(icahosttypes.SubModuleName, icaHostStack) - // this line is used by starport scaffolding # ibc/app/router + // this line is used by starport scaffolding # ibc/app/pfm appKeepers.IBCKeeper.SetRouter(ibcRouter) } @@ -465,44 +526,53 @@ func (appKeepers *AppKeepers) InitSpecialKeepers( skipUpgradeHeights map[int64]bool, homePath string, ) { + govModAddress := authtypes.NewModuleAddress(govtypes.ModuleName).String() + appKeepers.GenerateKeys() appKeepers.ParamsKeeper = appKeepers.initParamsKeeper(appCodec, cdc, appKeepers.keys[paramstypes.StoreKey], appKeepers.tkeys[paramstypes.TStoreKey]) appKeepers.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, appKeepers.keys[capabilitytypes.StoreKey], appKeepers.memKeys[capabilitytypes.MemStoreKey]) // set the BaseApp's parameter store - appKeepers.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, appKeepers.keys[consensusparamtypes.StoreKey], authtypes.NewModuleAddress(govtypes.ModuleName).String()) - bApp.SetParamStore(&appKeepers.ConsensusParamsKeeper) + appKeepers.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(appKeepers.keys[consensusparamtypes.StoreKey]), govModAddress, runtime.EventService{}) + bApp.SetParamStore(&appKeepers.ConsensusParamsKeeper.ParamsStore) // grant capabilities for the ibc and ibc-transfer modules - appKeepers.ScopedIBCKeeper = appKeepers.CapabilityKeeper.ScopeToModule(ibchost.ModuleName) + appKeepers.ScopedIBCKeeper = appKeepers.CapabilityKeeper.ScopeToModule(ibcexported.ModuleName) appKeepers.ScopedTransferKeeper = appKeepers.CapabilityKeeper.ScopeToModule(ibctransfertypes.ModuleName) - appKeepers.ScopedWasmKeeper = appKeepers.CapabilityKeeper.ScopeToModule(wasm.ModuleName) + appKeepers.ScopedWasmKeeper = appKeepers.CapabilityKeeper.ScopeToModule(wasmtypes.ModuleName) appKeepers.ScopedICAHostKeeper = appKeepers.CapabilityKeeper.ScopeToModule(icahosttypes.SubModuleName) appKeepers.ScopedRateLimitKeeper = appKeepers.CapabilityKeeper.ScopeToModule(ratelimitmoduletypes.ModuleName) - appKeepers.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, appKeepers.keys[upgradetypes.StoreKey], appCodec, homePath, bApp, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + appKeepers.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, runtime.NewKVStoreService(appKeepers.keys[upgradetypes.StoreKey]), appCodec, homePath, bApp, authtypes.NewModuleAddress(govtypes.ModuleName).String()) } // initParamsKeeper init params keeper and its subspaces func (appKeepers *AppKeepers) initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey storetypes.StoreKey) paramskeeper.Keeper { paramsKeeper := paramskeeper.NewKeeper(appCodec, legacyAmino, key, tkey) + // register the IBC key tables for legacy param subspaces + + // register the key tables for legacy param subspaces + keyTable := ibcclienttypes.ParamKeyTable() + keyTable.RegisterParamSet(&ibcconnectiontypes.Params{}) + paramsKeeper.Subspace(ibcexported.ModuleName).WithKeyTable(keyTable) + paramsKeeper.Subspace(ibctransfertypes.ModuleName).WithKeyTable(ibctransfertypes.ParamKeyTable()) + paramsKeeper.Subspace(icacontrollertypes.SubModuleName).WithKeyTable(icacontrollertypes.ParamKeyTable()) + paramsKeeper.Subspace(icahosttypes.SubModuleName).WithKeyTable(icahosttypes.ParamKeyTable()) + paramsKeeper.Subspace(authtypes.ModuleName) paramsKeeper.Subspace(banktypes.ModuleName) paramsKeeper.Subspace(stakingtypes.ModuleName) paramsKeeper.Subspace(distrtypes.ModuleName) paramsKeeper.Subspace(slashingtypes.ModuleName) - paramsKeeper.Subspace(routertypes.ModuleName).WithKeyTable(routertypes.ParamKeyTable()) // TODO: - paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govtypesv1.ParamKeyTable()) //nolint:staticcheck + paramsKeeper.Subspace(pfmtypes.ModuleName).WithKeyTable(pfmtypes.ParamKeyTable()) // TODO: + paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govtypesv1.ParamKeyTable()) paramsKeeper.Subspace(minttypes.ModuleName).WithKeyTable(minttypes.ParamKeyTable()) paramsKeeper.Subspace(crisistypes.ModuleName) - paramsKeeper.Subspace(ibctransfertypes.ModuleName) paramsKeeper.Subspace(ratelimitmoduletypes.ModuleName) - paramsKeeper.Subspace(icqtypes.ModuleName) - paramsKeeper.Subspace(ibchost.ModuleName) - paramsKeeper.Subspace(icahosttypes.SubModuleName) - paramsKeeper.Subspace(alliancemoduletypes.ModuleName) - paramsKeeper.Subspace(wasm.ModuleName) + paramsKeeper.Subspace(icqtypes.ModuleName).WithKeyTable(icqtypes.ParamKeyTable()) + paramsKeeper.Subspace(wasm08types.ModuleName) + paramsKeeper.Subspace(wasmtypes.ModuleName) paramsKeeper.Subspace(transfermiddlewaretypes.ModuleName) paramsKeeper.Subspace(stakingmiddlewaretypes.ModuleName) paramsKeeper.Subspace(ibctransfermiddlewaretypes.ModuleName) diff --git a/app/keepers/keys.go b/app/keepers/keys.go index 606b8f21d..353b7d6b3 100644 --- a/app/keepers/keys.go +++ b/app/keepers/keys.go @@ -1,33 +1,31 @@ package keepers import ( - sdk "github.com/cosmos/cosmos-sdk/types" + circuittypes "cosmossdk.io/x/circuit/types" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" - + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" // bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + evidencetypes "cosmossdk.io/x/evidence/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - "github.com/cosmos/cosmos-sdk/x/feegrant" + "cosmossdk.io/x/feegrant" "github.com/cosmos/cosmos-sdk/x/group" + upgradetypes "cosmossdk.io/x/upgrade/types" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - ibchost "github.com/cosmos/ibc-go/v7/modules/core/exported" - icqtypes "github.com/strangelove-ventures/async-icq/v7/types" - - routertypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types" - alliancemoduletypes "github.com/terra-money/alliance/x/alliance/types" + routertypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/types" + icqtypes "github.com/cosmos/ibc-apps/modules/async-icq/v8/types" + icahosttypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/types" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" ibchookstypes "github.com/notional-labs/composable/v6/x/ibc-hooks/types" ratelimitmoduletypes "github.com/notional-labs/composable/v6/x/ratelimit/types" @@ -36,12 +34,11 @@ import ( consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types" - storetypes "github.com/cosmos/cosmos-sdk/store/types" + storetypes "cosmossdk.io/store/types" minttypes "github.com/notional-labs/composable/v6/x/mint/types" - "github.com/CosmWasm/wasmd/x/wasm" - wasm08types "github.com/cosmos/ibc-go/v7/modules/light-clients/08-wasm/types" + wasm08types "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types" // customstakingtypes "github.com/notional-labs/composable/v6/custom/staking/types" stakingmiddleware "github.com/notional-labs/composable/v6/x/stakingmiddleware/types" @@ -53,19 +50,27 @@ import ( func (appKeepers *AppKeepers) GenerateKeys() { // Define what keys will be used in the cosmos-sdk key/value store. // Cosmos-SDK modules each have a "key" that allows the application to reference what they've stored on the chain. - appKeepers.keys = sdk.NewKVStoreKeys( + appKeepers.keys = storetypes.NewKVStoreKeys( authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey, - govtypes.StoreKey, paramstypes.StoreKey, ibchost.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, - evidencetypes.StoreKey, ibctransfertypes.StoreKey, icqtypes.StoreKey, capabilitytypes.StoreKey, consensusparamtypes.StoreKey, wasm08types.StoreKey, + govtypes.StoreKey, paramstypes.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, + evidencetypes.StoreKey, + circuittypes.StoreKey, + ibctransfertypes.StoreKey, + icqtypes.StoreKey, capabilitytypes.StoreKey, + consensusparamtypes.StoreKey, wasm08types.StoreKey, authzkeeper.StoreKey, stakingmiddleware.StoreKey, ibctransfermiddleware.StoreKey, - crisistypes.StoreKey, routertypes.StoreKey, transfermiddlewaretypes.StoreKey, group.StoreKey, minttypes.StoreKey, alliancemoduletypes.StoreKey, wasm.StoreKey, ibchookstypes.StoreKey, icahosttypes.StoreKey, ratelimitmoduletypes.StoreKey, txBoundaryTypes.StoreKey, + crisistypes.StoreKey, routertypes.StoreKey, transfermiddlewaretypes.StoreKey, + group.StoreKey, minttypes.StoreKey, wasmtypes.StoreKey, + ibcexported.StoreKey, + ibchookstypes.StoreKey, icahosttypes.StoreKey, + ratelimitmoduletypes.StoreKey, txBoundaryTypes.StoreKey, ) // Define transient store keys - appKeepers.tkeys = sdk.NewTransientStoreKeys(paramstypes.TStoreKey) + appKeepers.tkeys = storetypes.NewTransientStoreKeys(paramstypes.TStoreKey) // MemKeys are for information that is stored only in RAM. - appKeepers.memKeys = sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) + appKeepers.memKeys = storetypes.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) } // GetKVStoreKey gets KV Store keys. diff --git a/app/keepers/wasm.go b/app/keepers/wasm.go index 50bc15654..168c3e6f6 100644 --- a/app/keepers/wasm.go +++ b/app/keepers/wasm.go @@ -10,5 +10,8 @@ func AllCapabilities() []string { "stargate", "cosmwasm_1_1", "cosmwasm_1_2", + "cosmwasm_1_3", + "cosmwasm_1_4", + "cosmwasm_2_0", } } diff --git a/app/test_access.go b/app/test_access.go index a97c63b34..5e5d9883a 100644 --- a/app/test_access.go +++ b/app/test_access.go @@ -3,18 +3,17 @@ package app import ( "testing" - "github.com/CosmWasm/wasmd/x/wasm" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" - capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" - ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper" - ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - wasm08 "github.com/cosmos/ibc-go/v7/modules/light-clients/08-wasm/keeper" + capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" + wasm08 "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/keeper" + ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper" + ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" ratelimitkeeper "github.com/notional-labs/composable/v6/x/ratelimit/keeper" tfmdKeeper "github.com/notional-labs/composable/v6/x/transfermiddleware/keeper" @@ -70,10 +69,6 @@ func (s TestSupport) Wasm08Keeper() wasm08.Keeper { return s.app.Wasm08Keeper } -func (s TestSupport) WasmdKeeper() wasm.Keeper { - return s.app.WasmKeeper -} - func (s TestSupport) GetBaseApp() *baseapp.BaseApp { return s.app.BaseApp } diff --git a/app/test_helpers.go b/app/test_helpers.go index 78823300f..2b47c09c8 100644 --- a/app/test_helpers.go +++ b/app/test_helpers.go @@ -1,201 +1,62 @@ package app import ( + "bytes" + "encoding/hex" "encoding/json" + "fmt" "math/rand" - "path/filepath" + "strconv" "testing" "time" - "github.com/CosmWasm/wasmd/x/wasm" - "github.com/cosmos/cosmos-sdk/snapshots" - "github.com/cosmos/cosmos-sdk/snapshots/types" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" - dbm "github.com/cometbft/cometbft-db" + slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" + + "cosmossdk.io/errors" + "cosmossdk.io/log" + sdkmath "cosmossdk.io/math" abci "github.com/cometbft/cometbft/abci/types" - "github.com/cometbft/cometbft/libs/log" tmproto "github.com/cometbft/cometbft/proto/tendermint/types" - tmtypes "github.com/cometbft/cometbft/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" - codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" - "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" helpers "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/stretchr/testify/require" + + tmtypes "github.com/cometbft/cometbft/types" + dbm "github.com/cosmos/cosmos-db" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" - banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - stakinghelper "github.com/cosmos/cosmos-sdk/x/staking/testutil" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - "github.com/notional-labs/composable/v6/bech32-migration/utils" - typesconfig "github.com/notional-labs/composable/v6/cmd/picad/config" + minttypes "github.com/notional-labs/composable/v6/x/mint/types" - "github.com/stretchr/testify/require" - "github.com/stretchr/testify/suite" ) -// DefaultConsensusParams defines the default Tendermint consensus params used in -// FeeAbs testing. -var DefaultConsensusParams = &tmproto.ConsensusParams{ - Block: &tmproto.BlockParams{ - MaxBytes: 8000000, - MaxGas: 1234000000, - }, - Evidence: &tmproto.EvidenceParams{ - MaxAgeNumBlocks: 302400, - MaxAgeDuration: 504 * time.Hour, // 3 weeks is the max duration - MaxBytes: 10000, - }, - Validator: &tmproto.ValidatorParams{ - PubKeyTypes: []string{ - tmtypes.ABCIPubKeyTypeEd25519, - }, - }, -} - +// SimAppChainID hardcoded chainID for simulation const ( SimAppChainID = "" ) +const DefaultGas = 1200000 -type KeeperTestHelper struct { - suite.Suite - - App *ComposableApp - Ctx sdk.Context // ctx is deliver ctx - QueryHelper *baseapp.QueryServiceTestHelper - TestAccs []sdk.AccAddress - StakingHelper *stakinghelper.Helper -} - -func (s *KeeperTestHelper) Setup(_ *testing.T) { - t := s.T() - s.App = SetupApp(t) - s.Ctx = s.App.BaseApp.NewContext(false, tmproto.Header{Height: 1, ChainID: "", Time: time.Now().UTC()}) - s.QueryHelper = &baseapp.QueryServiceTestHelper{ - GRPCQueryRouter: s.App.GRPCQueryRouter(), - Ctx: s.Ctx, - } - s.TestAccs = createRandomAccounts(10) - - s.StakingHelper = stakinghelper.NewHelper(s.Suite.T(), s.Ctx, &s.App.StakingKeeper.Keeper) - s.StakingHelper.Denom = "stake" -} - -func (s *KeeperTestHelper) ConfirmUpgradeSucceeded(upgradeName string, upgradeHeight int64) { - s.Ctx = s.Ctx.WithBlockHeight(upgradeHeight - 1) - plan := upgradetypes.Plan{Name: upgradeName, Height: upgradeHeight} - err := s.App.UpgradeKeeper.ScheduleUpgrade(s.Ctx, plan) - s.Require().NoError(err) - _, exists := s.App.UpgradeKeeper.GetUpgradePlan(s.Ctx) - s.Require().True(exists) - - // NEW PREFIX: pica - sdk.GetConfig().SetBech32PrefixForAccount(utils.NewBech32PrefixAccAddr, utils.NewBech32PrefixAccPub) - sdk.GetConfig().SetBech32PrefixForValidator(utils.NewBech32PrefixValAddr, utils.NewBech32PrefixValPub) - sdk.GetConfig().SetBech32PrefixForConsensusNode(utils.NewBech32PrefixConsAddr, utils.NewBech32PrefixConsPub) - - s.Ctx = s.Ctx.WithBlockHeight(upgradeHeight) - s.Require().NotPanics(func() { - beginBlockRequest := abci.RequestBeginBlock{} - s.App.BeginBlocker(s.Ctx, beginBlockRequest) - }) -} - -// SetupValidator sets up a validator and returns the ValAddress. -func (s *KeeperTestHelper) SetupValidator(bondStatus stakingtypes.BondStatus) sdk.ValAddress { - valPriv := secp256k1.GenPrivKey() - valPub := valPriv.PubKey() - valAddr := sdk.ValAddress(valPub.Address()) - bondDenom := "stake" - selfBond := sdk.NewCoins(sdk.Coin{Amount: sdk.NewInt(100), Denom: bondDenom}) - - s.FundAcc(sdk.AccAddress(valAddr), selfBond) - - msg := s.StakingHelper.CreateValidatorMsg(valAddr, valPub, selfBond[0].Amount) - res, err := s.StakingHelper.CreateValidatorWithMsg(s.Ctx, msg) - s.Require().NoError(err) - s.Require().NotNil(res) - - val, found := s.App.StakingKeeper.GetValidator(s.Ctx, valAddr) - s.Require().True(found) - - val = val.UpdateStatus(bondStatus) - s.App.StakingKeeper.SetValidator(s.Ctx, val) - - consAddr, err := val.GetConsAddr() - s.Suite.Require().NoError(err) - - signingInfo := slashingtypes.NewValidatorSigningInfo( - consAddr, - s.Ctx.BlockHeight(), - 0, - time.Unix(0, 0), - false, - 0, - ) - s.App.SlashingKeeper.SetValidatorSigningInfo(s.Ctx, consAddr, signingInfo) - - return valAddr -} - -func (s *KeeperTestHelper) FundAcc(acc sdk.AccAddress, amounts sdk.Coins) { - err := banktestutil.FundAccount(s.App.BankKeeper, s.Ctx, acc, amounts) - s.Require().NoError(err) -} - -func SetupApp(t *testing.T) *ComposableApp { - t.Helper() - - privVal := NewPV() - pubKey, err := privVal.GetPubKey() - require.NoError(t, err) - // create validator set with single validator - validator := tmtypes.NewValidator(pubKey, 1) - valSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{validator}) - - // generate genesis account - senderPrivKey := secp256k1.GenPrivKey() - acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), 0, 0) - balance := banktypes.Balance{ - Address: acc.GetAddress().String(), - Coins: sdk.NewCoins(sdk.NewCoin(typesconfig.BaseCoinUnit, sdk.NewInt(100000000000000000))), - } - - app := SetupWithGenesisValSet(t, time.Now(), valSet, []authtypes.GenesisAccount{acc}, balance) - - return app -} - -func setup(tb testing.TB, withGenesis bool, invCheckPeriod uint) (*ComposableApp, GenesisState) { - tb.Helper() - nodeHome := tb.TempDir() - snapshotDir := filepath.Join(nodeHome, "data", "snapshots") - snapshotDB, err := dbm.NewDB("metadata", dbm.MemDBBackend, snapshotDir) - require.NoError(tb, err) - snapshotStore, err := snapshots.NewStore(snapshotDB, snapshotDir) - require.NoError(tb, err) - baseAppOpts := []func(*baseapp.BaseApp){baseapp.SetSnapshot(snapshotStore, types.SnapshotOptions{ - KeepRecent: 2, - })} - var wasmOpts []wasm.Option +func setup(withGenesis bool, chainID string) (*ComposableApp, GenesisState) { db := dbm.NewMemDB() app := NewComposableApp( log.NewNopLogger(), db, nil, true, - wasmtypes.EnableAllProposals, map[int64]bool{}, - nodeHome, - invCheckPeriod, - MakeEncodingConfig(), + DefaultNodeHome, + 5, EmptyBaseAppOptions{}, - wasmOpts, baseAppOpts...) + baseapp.SetChainID(chainID), + ) if withGenesis { return app, NewDefaultGenesisState() } @@ -208,13 +69,13 @@ func setup(tb testing.TB, withGenesis bool, invCheckPeriod uint) (*ComposableApp // account. A Nop logger is set in FeeAbs. func SetupWithGenesisValSet( t *testing.T, - ctxTime time.Time, valSet *tmtypes.ValidatorSet, genAccs []authtypes.GenesisAccount, + chainID string, balances ...banktypes.Balance, ) *ComposableApp { t.Helper() - app, genesisState := setup(t, true, 5) + app, genesisState := setup(true, chainID) // set genesis accounts authGenesis := authtypes.NewGenesisState(authtypes.DefaultParams(), genAccs) genesisState[authtypes.ModuleName] = app.appCodec.MustMarshalJSON(authGenesis) @@ -222,10 +83,10 @@ func SetupWithGenesisValSet( validators := make([]stakingtypes.Validator, 0, len(valSet.Validators)) delegations := make([]stakingtypes.Delegation, 0, len(valSet.Validators)) - bondAmt := sdk.NewInt(1000000000000) + bondAmt := sdk.DefaultPowerReduction for _, val := range valSet.Validators { - pk, err := cryptocodec.FromTmPubKeyInterface(val.PubKey) + pk, err := cryptocodec.FromCmtPubKeyInterface(val.PubKey) require.NoError(t, err) pkAny, err := codectypes.NewAnyWithValue(pk) require.NoError(t, err) @@ -235,66 +96,101 @@ func SetupWithGenesisValSet( Jailed: false, Status: stakingtypes.Bonded, Tokens: bondAmt, - DelegatorShares: sdk.OneDec(), + DelegatorShares: sdkmath.LegacyOneDec(), Description: stakingtypes.Description{}, UnbondingHeight: int64(0), UnbondingTime: time.Unix(0, 0).UTC(), - Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()), - MinSelfDelegation: sdk.ZeroInt(), + Commission: stakingtypes.NewCommission(sdkmath.LegacyZeroDec(), sdkmath.LegacyZeroDec(), sdkmath.LegacyZeroDec()), + MinSelfDelegation: sdkmath.ZeroInt(), } validators = append(validators, validator) - delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdk.OneDec())) + delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress().String(), sdk.ValAddress(val.Address).String(), sdkmath.LegacyOneDec())) } // set validators and delegations - stakingGenesis := stakingtypes.NewGenesisState(stakingtypes.DefaultParams(), validators, delegations) - genesisState[stakingtypes.ModuleName] = app.appCodec.MustMarshalJSON(stakingGenesis) + defaultStParams := stakingtypes.DefaultParams() + stParams := stakingtypes.NewParams( + defaultStParams.UnbondingTime, + defaultStParams.MaxValidators, + defaultStParams.MaxEntries, + defaultStParams.HistoricalEntries, + sdk.DefaultBondDenom, + defaultStParams.MinCommissionRate, + ) - totalSupply := sdk.NewCoins() - for _, b := range balances { - // add genesis acc tokens and delegated tokens to total supply - totalSupply = totalSupply.Add(b.Coins.Add(sdk.NewCoin(sdk.DefaultBondDenom, bondAmt))...) + // set validators and delegations + stakingGenesis := stakingtypes.NewGenesisState(stParams, validators, delegations) + genesisState[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(stakingGenesis) + + signingInfos := make([]slashingtypes.SigningInfo, len(valSet.Validators)) + for i, val := range valSet.Validators { + signingInfos[i] = slashingtypes.SigningInfo{ + Address: sdk.ConsAddress(val.Address).String(), + ValidatorSigningInfo: slashingtypes.ValidatorSigningInfo{}, + } } + slashingGenesis := slashingtypes.NewGenesisState(slashingtypes.DefaultParams(), signingInfos, nil) + genesisState[slashingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(slashingGenesis) // add bonded amount to bonded pool module account balances = append(balances, banktypes.Balance{ Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(), - Coins: sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, bondAmt)}, + Coins: sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, bondAmt.MulRaw(int64(len(valSet.Validators))))}, + }) + + balances = append(balances, banktypes.Balance{ + Address: authtypes.NewModuleAddress(distrtypes.ModuleName).String(), + Coins: sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(1000000))}, }) + totalSupply := sdk.NewCoins() + for _, b := range balances { + // add genesis acc tokens and delegated tokens to total supply + totalSupply = totalSupply.Add(b.Coins...) + } + fmt.Println("totalSupply", totalSupply) + // update total supply bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{}, []banktypes.SendEnabled{}) genesisState[banktypes.ModuleName] = app.appCodec.MustMarshalJSON(bankGenesis) + defaultDistrGenesis := distrtypes.DefaultGenesisState() + defaultDistrGenesis.FeePool.CommunityPool = append(defaultDistrGenesis.FeePool.CommunityPool, sdk.NewDecCoin(sdk.DefaultBondDenom, sdkmath.NewInt(1000000))) + genesisState[distrtypes.ModuleName] = app.appCodec.MustMarshalJSON(defaultDistrGenesis) + stateBytes, err := json.MarshalIndent(genesisState, "", " ") require.NoError(t, err) + consensusParams := helpers.DefaultConsensusParams + consensusParams.Block.MaxGas = 100 * helpers.DefaultGenTxGas + + if chainID == "" { + chainID = SimAppChainID + } + // init chain will set the validator set and initialize the genesis accounts - app.InitChain( - abci.RequestInitChain{ - Time: ctxTime, + _, err = app.InitChain( + &abci.RequestInitChain{ + ChainId: chainID, Validators: []abci.ValidatorUpdate{}, - ConsensusParams: DefaultConsensusParams, + ConsensusParams: consensusParams, + InitialHeight: app.LastBlockHeight() + 1, AppStateBytes: stateBytes, }, ) + if err != nil { + panic(err) + } - // commit genesis changes - app.Commit() - app.BeginBlock(abci.RequestBeginBlock{Header: tmproto.Header{ + _, err = app.FinalizeBlock(&abci.RequestFinalizeBlock{ Height: app.LastBlockHeight() + 1, - AppHash: app.LastCommitID().Hash, - ValidatorsHash: valSet.Hash(), + Hash: app.LastCommitID().Hash, NextValidatorsHash: valSet.Hash(), - }}) - - return app -} + }) + if err != nil { + panic(err) + } -// SetupWithEmptyStore setup a wasmd app instance with empty DB -func SetupWithEmptyStore(tb testing.TB) *ComposableApp { - tb.Helper() - app, _ := setup(tb, false, 0) return app } @@ -311,13 +207,136 @@ func createRandomAccounts(accNum int) []sdk.AccAddress { return testAddrs } -const DefaultGas = 1200000 +// createIncrementalAccounts is a strategy used by addTestAddrs() in order to generated addresses in ascending order. +func createIncrementalAccounts(accNum int) []sdk.AccAddress { + addresses := make([]sdk.AccAddress, 0, accNum) + var buffer bytes.Buffer -// SignAndDeliver signs and delivers a transaction. No simulation occurs as the -// ibc testing package causes checkState and deliverState to diverge in block time. -func SignAndDeliver( + // start at 100 so we can make up to 999 test addresses with valid test addresses + for i := 100; i < (accNum + 100); i++ { + numString := strconv.Itoa(i) + buffer.WriteString("A58856F0FD53BF058B4909A21AEC019107BA6") // base address string + + buffer.WriteString(numString) // adding on final two digits to make addresses unique + res, err := sdk.AccAddressFromHexUnsafe(buffer.String()) + if err != nil { + panic(err) + } + bech := res.String() + addr, err := TestAddr(buffer.String(), bech) + if err != nil { + panic(err) + } + + addresses = append(addresses, addr) + buffer.Reset() + } + + return addresses +} + +// AddTestAddrsFromPubKeys adds the addresses into the WasmApp providing only the public keys. +func AddTestAddrsFromPubKeys(app *ComposableApp, ctx sdk.Context, pubKeys []cryptotypes.PubKey, accAmt sdkmath.Int) { + denom, err := app.StakingKeeper.BondDenom(ctx) + if err != nil { + panic(err) + } + + initCoins := sdk.NewCoins(sdk.NewCoin(denom, accAmt)) + + for _, pk := range pubKeys { + initAccountWithCoins(app, ctx, sdk.AccAddress(pk.Address()), initCoins) + } +} + +// AddTestAddrs constructs and returns accNum amount of accounts with an +// initial balance of accAmt in random order +func AddTestAddrs(app *ComposableApp, ctx sdk.Context, accNum int, accAmt sdkmath.Int) []sdk.AccAddress { + return addTestAddrs(app, ctx, accNum, accAmt, createRandomAccounts) +} + +// AddTestAddrs constructs and returns accNum amount of accounts with an +// initial balance of accAmt in random order +func AddTestAddrsIncremental(app *ComposableApp, ctx sdk.Context, accNum int, accAmt sdkmath.Int) []sdk.AccAddress { + return addTestAddrs(app, ctx, accNum, accAmt, createIncrementalAccounts) +} + +func addTestAddrs(app *ComposableApp, ctx sdk.Context, accNum int, accAmt sdkmath.Int, strategy GenerateAccountStrategy) []sdk.AccAddress { + testAddrs := strategy(accNum) + + denom, err := app.StakingKeeper.BondDenom(ctx) + if err != nil { + panic(err) + } + + initCoins := sdk.NewCoins(sdk.NewCoin(denom, accAmt)) + + // fill all the addresses with some coins, set the loose pool tokens simultaneously + for _, addr := range testAddrs { + initAccountWithCoins(app, ctx, addr, initCoins) + } + + return testAddrs +} + +func initAccountWithCoins(app *ComposableApp, ctx sdk.Context, addr sdk.AccAddress, coins sdk.Coins) { + err := app.BankKeeper.MintCoins(ctx, minttypes.ModuleName, coins) + if err != nil { + panic(err) + } + + err = app.BankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, addr, coins) + if err != nil { + panic(err) + } +} + +// ConvertAddrsToValAddrs converts the provided addresses to ValAddress. +func ConvertAddrsToValAddrs(addrs []sdk.AccAddress) []sdk.ValAddress { + valAddrs := make([]sdk.ValAddress, len(addrs)) + + for i, addr := range addrs { + valAddrs[i] = sdk.ValAddress(addr) + } + + return valAddrs +} + +func TestAddr(addr, bech string) (sdk.AccAddress, error) { + res, err := sdk.AccAddressFromHexUnsafe(addr) + if err != nil { + return nil, err + } + bechexpected := res.String() + if bech != bechexpected { + return nil, fmt.Errorf("bech encoding doesn't match reference") + } + + bechres, err := sdk.AccAddressFromBech32(bech) + if err != nil { + return nil, err + } + if !bytes.Equal(bechres, res) { + return nil, err + } + + return res, nil +} + +// CheckBalance checks the balance of an account. +func CheckBalance(t *testing.T, app *ComposableApp, addr sdk.AccAddress, balances sdk.Coins) { + t.Helper() + ctxCheck := app.BaseApp.NewContext(true) + require.True(t, balances.Equal(app.BankKeeper.GetAllBalances(ctxCheck, addr))) +} + +// SignCheckDeliver checks a generated signed transaction and simulates a +// block commitment with the given transaction. A test assertion is made using +// the parameter 'expPass' against the result. A corresponding result is +// returned. +func SignCheckDeliver( t *testing.T, txCfg client.TxConfig, app *baseapp.BaseApp, header tmproto.Header, msgs []sdk.Msg, - chainID string, accNums, accSeqs []uint64, _, expPass bool, priv ...cryptotypes.PrivKey, + chainID string, accNums, accSeqs []uint64, expSimPass, expPass bool, priv ...cryptotypes.PrivKey, ) (sdk.GasInfo, *sdk.Result, error) { t.Helper() tx, err := helpers.GenSignedMockTx( @@ -332,9 +351,22 @@ func SignAndDeliver( priv..., ) require.NoError(t, err) + txBytes, err := txCfg.TxEncoder()(tx) + require.Nil(t, err) + + // Must simulate now as CheckTx doesn't run Msgs anymore + _, res, err := app.Simulate(txBytes) + + if expSimPass { + require.NoError(t, err) + require.NotNil(t, res) + } else { + require.Error(t, err) + require.Nil(t, res) + } // Simulate a sending a transaction and committing a block - app.BeginBlock(abci.RequestBeginBlock{Header: header}) + // app.BeginBlock(abci.RequestFinalizeBlock{Header: header}) gInfo, res, err := app.SimDeliver(txCfg.TxEncoder(), tx) if expPass { @@ -345,12 +377,103 @@ func SignAndDeliver( require.Nil(t, res) } - app.EndBlock(abci.RequestEndBlock{}) + // app.EndBlock(abci.RequestEndBlock{}) TODO: Check begin and end block app.Commit() return gInfo, res, err } +func SignAndDeliver( + tb testing.TB, txCfg client.TxConfig, app *baseapp.BaseApp, msgs []sdk.Msg, + chainID string, accNums, accSeqs []uint64, expPass bool, blockTime time.Time, nextValHash []byte, priv ...cryptotypes.PrivKey, +) (*abci.ResponseFinalizeBlock, error) { + tb.Helper() + tx, err := helpers.GenSignedMockTx( + rand.New(rand.NewSource(time.Now().UnixNano())), + txCfg, + msgs, + sdk.Coins{sdk.NewInt64Coin(sdk.DefaultBondDenom, 0)}, + helpers.DefaultGenTxGas, + chainID, + accNums, + accSeqs, + priv..., + ) + require.NoError(tb, err) + + txBytes, err := txCfg.TxEncoder()(tx) + require.NoError(tb, err) + + return app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: app.LastBlockHeight() + 1, + Time: blockTime, + NextValidatorsHash: nextValHash, + Txs: [][]byte{txBytes}, + }) +} + +// GenSequenceOfTxs generates a set of signed transactions of messages, such +// that they differ only by having the sequence numbers incremented between +// every transaction. +func GenSequenceOfTxs(txGen client.TxConfig, msgs []sdk.Msg, accNums, initSeqNums []uint64, numToGenerate int, priv ...cryptotypes.PrivKey) ([]sdk.Tx, error) { + txs := make([]sdk.Tx, numToGenerate) + var err error + for i := 0; i < numToGenerate; i++ { + txs[i], err = helpers.GenSignedMockTx( + rand.New(rand.NewSource(time.Now().UnixNano())), + txGen, + msgs, + sdk.Coins{sdk.NewInt64Coin(sdk.DefaultBondDenom, 0)}, + helpers.DefaultGenTxGas, + "", + accNums, + initSeqNums, + priv..., + ) + if err != nil { + break + } + incrementAllSequenceNumbers(initSeqNums) + } + + return txs, err +} + +func incrementAllSequenceNumbers(initSeqNums []uint64) { + for i := 0; i < len(initSeqNums); i++ { + initSeqNums[i]++ + } +} + +// CreateTestPubKeys returns a total of numPubKeys public keys in ascending order. +func CreateTestPubKeys(numPubKeys int) []cryptotypes.PubKey { + publicKeys := make([]cryptotypes.PubKey, 0, numPubKeys) + var buffer bytes.Buffer + + // start at 10 to avoid changing 1 to 01, 2 to 02, etc + for i := 100; i < (numPubKeys + 100); i++ { + numString := strconv.Itoa(i) + buffer.WriteString("0B485CFC0EECC619440448436F8FC9DF40566F2369E72400281454CB552AF") // base pubkey string + buffer.WriteString(numString) // adding on final two digits to make pubkeys unique + publicKeys = append(publicKeys, NewPubKeyFromHex(buffer.String())) + buffer.Reset() + } + + return publicKeys +} + +// NewPubKeyFromHex returns a PubKey from a hex string. +func NewPubKeyFromHex(pk string) (res cryptotypes.PubKey) { + pkBytes, err := hex.DecodeString(pk) + if err != nil { + panic(err) + } + if len(pkBytes) != ed25519.PubKeySize { + panic(errors.Wrap(sdkerrors.ErrInvalidPubKey, "invalid pubkey size")) + } + return &ed25519.PubKey{Key: pkBytes} +} + // EmptyBaseAppOptions is a stub implementing AppOptions type EmptyBaseAppOptions struct{} @@ -372,3 +495,43 @@ func FundAccount(bankKeeper bankkeeper.Keeper, ctx sdk.Context, addr sdk.AccAddr return bankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, addr, amounts) } + +// FundModuleAccount is a utility function that funds a module account by +// minting and sending the coins to the address. This should be used for testing +// purposes only! +// +// Instead of using the mint module account, which has the +// permission of minting, create a "faucet" account. (@fdymylja) +func FundModuleAccount(bankKeeper bankkeeper.Keeper, ctx sdk.Context, recipientMod string, amounts sdk.Coins) error { + if err := bankKeeper.MintCoins(ctx, minttypes.ModuleName, amounts); err != nil { + return err + } + + return bankKeeper.SendCoinsFromModuleToModule(ctx, minttypes.ModuleName, recipientMod, amounts) +} + +// SignAndDeliverWithoutCommit signs and delivers a transaction. No commit +func SignAndDeliverWithoutCommit(t *testing.T, txCfg client.TxConfig, app *baseapp.BaseApp, msgs []sdk.Msg, chainID string, accNums, accSeqs []uint64, blockTime time.Time, priv ...cryptotypes.PrivKey) (*abci.ResponseFinalizeBlock, error) { + t.Helper() // Mark the function as a test helper + tx, err := helpers.GenSignedMockTx( + rand.New(rand.NewSource(time.Now().UnixNano())), + txCfg, + msgs, + sdk.Coins{sdk.NewInt64Coin(sdk.DefaultBondDenom, 0)}, + 2*DefaultGas, + chainID, + accNums, + accSeqs, + priv..., + ) + require.NoError(t, err) + + bz, err := txCfg.TxEncoder()(tx) + require.NoError(t, err) + + return app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: app.LastBlockHeight() + 1, + Time: blockTime, + Txs: [][]byte{bz}, + }) +} diff --git a/app/test_support.go b/app/test_support.go new file mode 100644 index 000000000..1f9f0218b --- /dev/null +++ b/app/test_support.go @@ -0,0 +1,77 @@ +package app + +import ( + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + packetforwardkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/keeper" + capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" + wasm08keeper "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/keeper" + ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" + customibctransferkeeper "github.com/notional-labs/composable/v6/custom/ibc-transfer/keeper" + ratelimitmodulekeeper "github.com/notional-labs/composable/v6/x/ratelimit/keeper" + transfermiddlewarekeeper "github.com/notional-labs/composable/v6/x/transfermiddleware/keeper" +) + +func (app *ComposableApp) GetStakingKeeper() *stakingkeeper.Keeper { + return &app.StakingKeeper.Keeper +} + +func (app *ComposableApp) GetIBCKeeper() *ibckeeper.Keeper { + return app.IBCKeeper +} + +func (app *ComposableApp) GetScopedIBCKeeper() capabilitykeeper.ScopedKeeper { + return app.ScopedIBCKeeper +} + +func (app *ComposableApp) GetBaseApp() *baseapp.BaseApp { + return app.BaseApp +} + +func (app *ComposableApp) GetBankKeeper() bankkeeper.Keeper { + return app.BankKeeper +} + +func (app *ComposableApp) GetAccountKeeper() authkeeper.AccountKeeper { + return app.AccountKeeper +} + +func (app *ComposableApp) GetWasmKeeper() wasmkeeper.Keeper { + return app.WasmKeeper +} + +func (app *ComposableApp) GetWasm08Keeper() wasm08keeper.Keeper { + return app.Wasm08Keeper +} + +func (app *ComposableApp) GetPfmKeeper() packetforwardkeeper.Keeper { + return *app.PfmKeeper +} + +func (app *ComposableApp) GetRateLimitKeeper() ratelimitmodulekeeper.Keeper { + return app.RatelimitKeeper +} + +// GetTransferKeeper implements the TestingApp interface. +func (app *ComposableApp) GetTransferKeeper() customibctransferkeeper.Keeper { + return app.TransferKeeper +} + +func (app *ComposableApp) GetTransferMiddlewareKeeper() transfermiddlewarekeeper.Keeper { + return app.TransferMiddlewareKeeper +} + +func (app *ComposableApp) GetGovKeeper() *govkeeper.Keeper { + return &app.GovKeeper +} + +// GetTxConfig implements the TestingApp interface. +func (app *ComposableApp) GetTxConfig() client.TxConfig { + cfg := MakeEncodingConfig() + return cfg.TxConfig +} diff --git a/app/upgrades/types.go b/app/upgrades/types.go index 10551b005..c2abaf1a1 100644 --- a/app/upgrades/types.go +++ b/app/upgrades/types.go @@ -1,12 +1,12 @@ package upgrades import ( + store "cosmossdk.io/store/types" + upgradetypes "cosmossdk.io/x/upgrade/types" types "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/codec" - store "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" "github.com/notional-labs/composable/v6/app/keepers" ) @@ -14,8 +14,8 @@ import ( // BaseAppParamManager defines an interrace that BaseApp is expected to fullfil // that allows upgrade handlers to modify BaseApp parameters. type BaseAppParamManager interface { - GetConsensusParams(ctx sdk.Context) *types.ConsensusParams - StoreConsensusParams(ctx sdk.Context, cp *types.ConsensusParams) + GetConsensusParams(ctx sdk.Context) types.ConsensusParams + StoreConsensusParams(ctx sdk.Context, cp types.ConsensusParams) error } // Upgrade defines a struct containing necessary fields that a SoftwareUpgradeProposal diff --git a/app/upgrades/v6_5_0/constants.go b/app/upgrades/v6_5_0/constants.go deleted file mode 100644 index cfbba664c..000000000 --- a/app/upgrades/v6_5_0/constants.go +++ /dev/null @@ -1,21 +0,0 @@ -package v6_5_0 - -import ( - store "github.com/cosmos/cosmos-sdk/store/types" - "github.com/notional-labs/composable/v6/app/upgrades" - ibctransfermiddleware "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types" -) - -const ( - // UpgradeName defines the on-chain upgrade name for the composable upgrade. - UpgradeName = "v6_5_0" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateUpgradeHandler, - StoreUpgrades: store.StoreUpgrades{ - Added: []string{ibctransfermiddleware.StoreKey}, - Deleted: []string{}, - }, -} diff --git a/app/upgrades/v6_5_0/upgrade.go b/app/upgrades/v6_5_0/upgrade.go deleted file mode 100644 index 18cf2ad54..000000000 --- a/app/upgrades/v6_5_0/upgrade.go +++ /dev/null @@ -1,46 +0,0 @@ -package v6_5_0 - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - - "github.com/cosmos/cosmos-sdk/codec" - "github.com/notional-labs/composable/v6/app/keepers" - "github.com/notional-labs/composable/v6/app/upgrades" - ibctransfermiddleware "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types" -) - -func CreateUpgradeHandler( - mm *module.Manager, - configurator module.Configurator, - _ upgrades.BaseAppParamManager, - _ codec.Codec, - keepers *keepers.AppKeepers, -) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - custommiddlewareparams := ibctransfermiddleware.DefaultGenesisState() - keepers.IbcTransferMiddlewareKeeper.SetParams(ctx, custommiddlewareparams.Params) - - // remove broken proposals - // BrokenProposals := [3]uint64{2, 6, 11} - // for _, proposal_id := range BrokenProposals { - // _, ok := keepers.GovKeeper.GetProposal(ctx, proposal_id) - // if ok { - // keepers.GovKeeper.DeleteProposal(ctx, proposal_id) - // } - // } - - // burn extra ppica in escrow account - // this ppica is unused because it is a native token stored in escrow account - // it was unnecessarily minted to match pica escrowed on picasso to ppica minted - // in genesis, to make initial native ppica transferrable to picasso - amount, ok := sdk.NewIntFromString("1066669217167120000000") - if ok { - coins := sdk.Coins{sdk.NewCoin("ppica", amount)} - keepers.BankKeeper.SendCoinsFromAccountToModule(ctx, sdk.MustAccAddressFromBech32("centauri12k2pyuylm9t7ugdvz67h9pg4gmmvhn5vmvgw48"), "gov", coins) - keepers.BankKeeper.BurnCoins(ctx, "gov", coins) - } - return mm.RunMigrations(ctx, configurator, vm) - } -} diff --git a/app/upgrades/v6_5_1/constants.go b/app/upgrades/v6_5_1/constants.go deleted file mode 100644 index 4c7f2b5e3..000000000 --- a/app/upgrades/v6_5_1/constants.go +++ /dev/null @@ -1,20 +0,0 @@ -package v6_5_1 - -import ( - store "github.com/cosmos/cosmos-sdk/store/types" - "github.com/notional-labs/composable/v6/app/upgrades" -) - -const ( - // UpgradeName defines the on-chain upgrade name for the composable upgrade. - UpgradeName = "v6_5_1" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateUpgradeHandler, - StoreUpgrades: store.StoreUpgrades{ - Added: []string{}, - Deleted: []string{}, - }, -} diff --git a/app/upgrades/v6_5_1/upgrade.go b/app/upgrades/v6_5_1/upgrade.go deleted file mode 100644 index 3d8fd257a..000000000 --- a/app/upgrades/v6_5_1/upgrade.go +++ /dev/null @@ -1,23 +0,0 @@ -package v6_5_1 - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - - "github.com/cosmos/cosmos-sdk/codec" - "github.com/notional-labs/composable/v6/app/keepers" - "github.com/notional-labs/composable/v6/app/upgrades" -) - -func CreateUpgradeHandler( - mm *module.Manager, - configurator module.Configurator, - _ upgrades.BaseAppParamManager, - _ codec.Codec, - keepers *keepers.AppKeepers, -) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - return mm.RunMigrations(ctx, configurator, vm) - } -} diff --git a/app/upgrades/v6_5_2/constants.go b/app/upgrades/v6_5_2/constants.go deleted file mode 100644 index 288c89287..000000000 --- a/app/upgrades/v6_5_2/constants.go +++ /dev/null @@ -1,20 +0,0 @@ -package v6_5_2 - -import ( - store "github.com/cosmos/cosmos-sdk/store/types" - "github.com/notional-labs/composable/v6/app/upgrades" -) - -const ( - // UpgradeName defines the on-chain upgrade name for the composable upgrade. - UpgradeName = "v6_5_2" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateUpgradeHandler, - StoreUpgrades: store.StoreUpgrades{ - Added: []string{}, - Deleted: []string{}, - }, -} diff --git a/app/upgrades/v6_5_2/upgrade.go b/app/upgrades/v6_5_2/upgrade.go deleted file mode 100644 index 11a813c2c..000000000 --- a/app/upgrades/v6_5_2/upgrade.go +++ /dev/null @@ -1,23 +0,0 @@ -package v6_5_2 - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - - "github.com/cosmos/cosmos-sdk/codec" - "github.com/notional-labs/composable/v6/app/keepers" - "github.com/notional-labs/composable/v6/app/upgrades" -) - -func CreateUpgradeHandler( - mm *module.Manager, - configurator module.Configurator, - _ upgrades.BaseAppParamManager, - _ codec.Codec, - keepers *keepers.AppKeepers, -) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - return mm.RunMigrations(ctx, configurator, vm) - } -} diff --git a/app/upgrades/v6_5_3/constants.go b/app/upgrades/v6_5_3/constants.go deleted file mode 100644 index 509d5d40b..000000000 --- a/app/upgrades/v6_5_3/constants.go +++ /dev/null @@ -1,20 +0,0 @@ -package v6_5_3 - -import ( - store "github.com/cosmos/cosmos-sdk/store/types" - "github.com/notional-labs/composable/v6/app/upgrades" -) - -const ( - // UpgradeName defines the on-chain upgrade name for the composable upgrade. - UpgradeName = "v6_5_3" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateUpgradeHandler, - StoreUpgrades: store.StoreUpgrades{ - Added: []string{}, - Deleted: []string{}, - }, -} diff --git a/app/upgrades/v6_5_3/upgrade.go b/app/upgrades/v6_5_3/upgrade.go deleted file mode 100644 index 405440f88..000000000 --- a/app/upgrades/v6_5_3/upgrade.go +++ /dev/null @@ -1,23 +0,0 @@ -package v6_5_3 - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - - "github.com/cosmos/cosmos-sdk/codec" - "github.com/notional-labs/composable/v6/app/keepers" - "github.com/notional-labs/composable/v6/app/upgrades" -) - -func CreateUpgradeHandler( - mm *module.Manager, - configurator module.Configurator, - _ upgrades.BaseAppParamManager, - _ codec.Codec, - keepers *keepers.AppKeepers, -) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - return mm.RunMigrations(ctx, configurator, vm) - } -} diff --git a/app/upgrades/v6_5_4/constants.go b/app/upgrades/v6_5_4/constants.go deleted file mode 100644 index dc26cf58e..000000000 --- a/app/upgrades/v6_5_4/constants.go +++ /dev/null @@ -1,20 +0,0 @@ -package v6_5_4 - -import ( - store "github.com/cosmos/cosmos-sdk/store/types" - "github.com/notional-labs/composable/v6/app/upgrades" -) - -const ( - // UpgradeName defines the on-chain upgrade name for the composable upgrade. - UpgradeName = "v6_5_4" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateUpgradeHandler, - StoreUpgrades: store.StoreUpgrades{ - Added: []string{}, - Deleted: []string{}, - }, -} diff --git a/app/upgrades/v6_5_4/upgrade.go b/app/upgrades/v6_5_4/upgrade.go deleted file mode 100644 index 868a8b544..000000000 --- a/app/upgrades/v6_5_4/upgrade.go +++ /dev/null @@ -1,35 +0,0 @@ -package v6_5_4 - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - "github.com/cosmos/cosmos-sdk/x/gov/types" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - - "github.com/cosmos/cosmos-sdk/codec" - "github.com/notional-labs/composable/v6/app/keepers" - - "github.com/notional-labs/composable/v6/app/upgrades" -) - -func CreateUpgradeHandler( - mm *module.Manager, - configurator module.Configurator, - _ upgrades.BaseAppParamManager, - _ codec.Codec, - keepers *keepers.AppKeepers, -) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - BrokenProposals := [3]uint64{2, 6, 11} - // gov module store - store := ctx.KVStore(keepers.GetKVStoreKey()["gov"]) - - for _, proposalID := range BrokenProposals { - bz := store.Get(types.ProposalKey(proposalID)) - if bz != nil { - store.Delete(types.ProposalKey(proposalID)) - } - } - return mm.RunMigrations(ctx, configurator, vm) - } -} diff --git a/app/upgrades/v6_5_5/constants.go b/app/upgrades/v6_5_5/constants.go deleted file mode 100644 index 1c066a692..000000000 --- a/app/upgrades/v6_5_5/constants.go +++ /dev/null @@ -1,20 +0,0 @@ -package v6_5_5 - -import ( - store "github.com/cosmos/cosmos-sdk/store/types" - "github.com/notional-labs/composable/v6/app/upgrades" -) - -const ( - // UpgradeName defines the on-chain upgrade name for the composable upgrade. - UpgradeName = "v6_5_5" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateUpgradeHandler, - StoreUpgrades: store.StoreUpgrades{ - Added: []string{}, - Deleted: []string{}, - }, -} diff --git a/app/upgrades/v6_5_5/upgrade.go b/app/upgrades/v6_5_5/upgrade.go deleted file mode 100644 index 2226d99ef..000000000 --- a/app/upgrades/v6_5_5/upgrade.go +++ /dev/null @@ -1,24 +0,0 @@ -package v6_5_5 - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - - "github.com/cosmos/cosmos-sdk/codec" - "github.com/notional-labs/composable/v6/app/keepers" - - "github.com/notional-labs/composable/v6/app/upgrades" -) - -func CreateUpgradeHandler( - mm *module.Manager, - configurator module.Configurator, - _ upgrades.BaseAppParamManager, - _ codec.Codec, - keepers *keepers.AppKeepers, -) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - return mm.RunMigrations(ctx, configurator, vm) - } -} diff --git a/app/upgrades/v6_6_1/constants.go b/app/upgrades/v6_6_1/constants.go deleted file mode 100644 index 012196502..000000000 --- a/app/upgrades/v6_6_1/constants.go +++ /dev/null @@ -1,20 +0,0 @@ -package v6_6_1 - -import ( - store "github.com/cosmos/cosmos-sdk/store/types" - "github.com/notional-labs/composable/v6/app/upgrades" -) - -const ( - // UpgradeName defines the on-chain upgrade name for the composable upgrade. - UpgradeName = "v6_6_1" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateUpgradeHandler, - StoreUpgrades: store.StoreUpgrades{ - Added: []string{}, - Deleted: []string{}, - }, -} diff --git a/app/upgrades/v6_6_1/upgrade.go b/app/upgrades/v6_6_1/upgrade.go deleted file mode 100644 index f8f146e83..000000000 --- a/app/upgrades/v6_6_1/upgrade.go +++ /dev/null @@ -1,60 +0,0 @@ -package v6_6_1 - -import ( - "github.com/CosmWasm/wasmd/x/wasm" - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - routertypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types" - icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" - ibchookstypes "github.com/notional-labs/composable/v6/x/ibc-hooks/types" - ibctransfermiddlewaretypes "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types" - - "github.com/notional-labs/composable/v6/app/keepers" - "github.com/notional-labs/composable/v6/app/upgrades" - bech32authmigration "github.com/notional-labs/composable/v6/bech32-migration/auth" - bech32govmigration "github.com/notional-labs/composable/v6/bech32-migration/gov" - bech32IbcHooksMigration "github.com/notional-labs/composable/v6/bech32-migration/ibchooks" - bench32ibctransfermiddleware "github.com/notional-labs/composable/v6/bech32-migration/ibctransfermiddleware" - bech32icamigration "github.com/notional-labs/composable/v6/bech32-migration/ica" - bech32mintmigration "github.com/notional-labs/composable/v6/bech32-migration/mint" - bech32PfmMigration "github.com/notional-labs/composable/v6/bech32-migration/pfmmiddleware" - bech32slashingmigration "github.com/notional-labs/composable/v6/bech32-migration/slashing" - bech32stakingmigration "github.com/notional-labs/composable/v6/bech32-migration/staking" - bech32transfermiddlewaremigration "github.com/notional-labs/composable/v6/bech32-migration/transfermiddleware" - bech32WasmMigration "github.com/notional-labs/composable/v6/bech32-migration/wasm" - transfermiddlewaretypes "github.com/notional-labs/composable/v6/x/transfermiddleware/types" -) - -func CreateUpgradeHandler( - mm *module.Manager, - configurator module.Configurator, - _ upgrades.BaseAppParamManager, - codec codec.Codec, - keepers *keepers.AppKeepers, -) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - keys := keepers.GetKVStoreKey() - // Migration prefix - ctx.Logger().Info("First step: Migrate addresses stored in bech32 form to use new prefix") - bech32stakingmigration.MigrateAddressBech32(ctx, keys[stakingtypes.StoreKey], codec) - bech32stakingmigration.MigrateUnbonding(ctx, keys[stakingtypes.StoreKey], codec) - bech32slashingmigration.MigrateAddressBech32(ctx, keys[slashingtypes.StoreKey], codec) - bech32govmigration.MigrateAddressBech32(ctx, keys[govtypes.StoreKey], codec) - bech32authmigration.MigrateAddressBech32(ctx, keys[authtypes.StoreKey], codec) - bech32icamigration.MigrateAddressBech32(ctx, keys[icahosttypes.StoreKey], codec) - bech32mintmigration.MigrateAddressBech32(ctx, keys[minttypes.StoreKey], codec) - bech32transfermiddlewaremigration.MigrateAddressBech32(ctx, keys[transfermiddlewaretypes.StoreKey], codec) - bech32WasmMigration.MigrateAddressBech32(ctx, keys[wasm.StoreKey], codec) - bech32PfmMigration.MigrateAddressBech32(ctx, keys[routertypes.StoreKey], codec, keepers) - bench32ibctransfermiddleware.MigrateAddressBech32(ctx, keys[ibctransfermiddlewaretypes.StoreKey], codec) - bech32IbcHooksMigration.MigrateAddressBech32(ctx, keys[ibchookstypes.StoreKey], codec) - return mm.RunMigrations(ctx, configurator, vm) - } -} diff --git a/app/upgrades/v6_6_2/constants.go b/app/upgrades/v6_6_2/constants.go deleted file mode 100644 index edc47ab59..000000000 --- a/app/upgrades/v6_6_2/constants.go +++ /dev/null @@ -1,20 +0,0 @@ -package v6_6_2 - -import ( - store "github.com/cosmos/cosmos-sdk/store/types" - "github.com/notional-labs/composable/v6/app/upgrades" -) - -const ( - // UpgradeName defines the on-chain upgrade name for the composable upgrade. - UpgradeName = "v6_6_2" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateUpgradeHandler, - StoreUpgrades: store.StoreUpgrades{ - Added: []string{}, - Deleted: []string{}, - }, -} diff --git a/app/upgrades/v6_6_2/upgrade.go b/app/upgrades/v6_6_2/upgrade.go deleted file mode 100644 index 15db9ee1b..000000000 --- a/app/upgrades/v6_6_2/upgrade.go +++ /dev/null @@ -1,32 +0,0 @@ -package v6_6_2 - -import ( - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - ibchookstypes "github.com/notional-labs/composable/v6/x/ibc-hooks/types" - ibctransfermiddlewaretypes "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types" - - "github.com/notional-labs/composable/v6/app/keepers" - "github.com/notional-labs/composable/v6/app/upgrades" - bech32IbcHooksMigration "github.com/notional-labs/composable/v6/bech32-migration/ibchooks" - bench32ibctransfermiddleware "github.com/notional-labs/composable/v6/bech32-migration/ibctransfermiddleware" -) - -func CreateUpgradeHandler( - mm *module.Manager, - configurator module.Configurator, - _ upgrades.BaseAppParamManager, - codec codec.Codec, - keepers *keepers.AppKeepers, -) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - keys := keepers.GetKVStoreKey() - // Migration prefix - ctx.Logger().Info("First step: Migrate addresses stored in bech32 form to use new prefix") - bench32ibctransfermiddleware.MigrateAddressBech32(ctx, keys[ibctransfermiddlewaretypes.StoreKey], codec) - bech32IbcHooksMigration.MigrateAddressBech32(ctx, keys[ibchookstypes.StoreKey], codec) - return mm.RunMigrations(ctx, configurator, vm) - } -} diff --git a/app/upgrades/v6_6_4/constants.go b/app/upgrades/v6_6_4/constants.go deleted file mode 100644 index 460f8d743..000000000 --- a/app/upgrades/v6_6_4/constants.go +++ /dev/null @@ -1,20 +0,0 @@ -package v6_6_4 - -import ( - store "github.com/cosmos/cosmos-sdk/store/types" - "github.com/notional-labs/composable/v6/app/upgrades" -) - -const ( - // UpgradeName defines the on-chain upgrade name for the composable upgrade. - UpgradeName = "v6_6_4" -) - -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateUpgradeHandler, - StoreUpgrades: store.StoreUpgrades{ - Added: []string{}, - Deleted: []string{}, - }, -} diff --git a/app/upgrades/v6_6_4/upgrade.go b/app/upgrades/v6_6_4/upgrade.go deleted file mode 100644 index 7c6a960ea..000000000 --- a/app/upgrades/v6_6_4/upgrade.go +++ /dev/null @@ -1,60 +0,0 @@ -package v6_6_4 - -import ( - "github.com/CosmWasm/wasmd/x/wasm" - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - routertypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types" - icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" - ibchookstypes "github.com/notional-labs/composable/v6/x/ibc-hooks/types" - ibctransfermiddlewaretypes "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types" - - "github.com/notional-labs/composable/v6/app/keepers" - "github.com/notional-labs/composable/v6/app/upgrades" - bech32authmigration "github.com/notional-labs/composable/v6/bech32-migration/auth" - bech32govmigration "github.com/notional-labs/composable/v6/bech32-migration/gov" - bech32IbcHooksMigration "github.com/notional-labs/composable/v6/bech32-migration/ibchooks" - bench32ibctransfermiddleware "github.com/notional-labs/composable/v6/bech32-migration/ibctransfermiddleware" - bech32icamigration "github.com/notional-labs/composable/v6/bech32-migration/ica" - bech32mintmigration "github.com/notional-labs/composable/v6/bech32-migration/mint" - bech32PfmMigration "github.com/notional-labs/composable/v6/bech32-migration/pfmmiddleware" - bech32slashingmigration "github.com/notional-labs/composable/v6/bech32-migration/slashing" - bech32stakingmigration "github.com/notional-labs/composable/v6/bech32-migration/staking" - bech32transfermiddlewaremigration "github.com/notional-labs/composable/v6/bech32-migration/transfermiddleware" - bech32WasmMigration "github.com/notional-labs/composable/v6/bech32-migration/wasm" - transfermiddlewaretypes "github.com/notional-labs/composable/v6/x/transfermiddleware/types" -) - -func CreateUpgradeHandler( - mm *module.Manager, - configurator module.Configurator, - _ upgrades.BaseAppParamManager, - codec codec.Codec, - keepers *keepers.AppKeepers, -) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - keys := keepers.GetKVStoreKey() - // Migration prefix - ctx.Logger().Info("First step: Migrate addresses stored in bech32 form to use new prefix") - bech32stakingmigration.MigrateAddressBech32(ctx, keys[stakingtypes.StoreKey], codec) - bech32stakingmigration.MigrateUnbonding(ctx, keys[stakingtypes.StoreKey], codec) - bech32slashingmigration.MigrateAddressBech32(ctx, keys[slashingtypes.StoreKey], codec) - bech32govmigration.MigrateAddressBech32(ctx, keys[govtypes.StoreKey], codec) - bech32authmigration.MigrateAddressBech32(ctx, keys[authtypes.StoreKey], codec) - bech32icamigration.MigrateAddressBech32(ctx, keys[icahosttypes.StoreKey], codec) - bech32mintmigration.MigrateAddressBech32(ctx, keys[minttypes.StoreKey], codec) - bech32transfermiddlewaremigration.MigrateAddressBech32(ctx, keys[transfermiddlewaretypes.StoreKey], codec) - bech32WasmMigration.MigrateAddressBech32(ctx, keys[wasm.StoreKey], codec) - bech32PfmMigration.MigrateAddressBech32(ctx, keys[routertypes.StoreKey], codec, keepers) - bench32ibctransfermiddleware.MigrateAddressBech32(ctx, keys[ibctransfermiddlewaretypes.StoreKey], codec) - bech32IbcHooksMigration.MigrateAddressBech32(ctx, keys[ibchookstypes.StoreKey], codec) - return mm.RunMigrations(ctx, configurator, vm) - } -} diff --git a/app/upgrades/v6_6_4/upgrades_test.go b/app/upgrades/v6_6_4/upgrades_test.go deleted file mode 100644 index 73e020de1..000000000 --- a/app/upgrades/v6_6_4/upgrades_test.go +++ /dev/null @@ -1,540 +0,0 @@ -package v6_6_4_test - -import ( - "encoding/json" - "strings" - "testing" - "time" - - ibchookskeeper "github.com/notional-labs/composable/v6/x/ibc-hooks/keeper" - ibctransfermiddlewaretypes "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types" - - "github.com/notional-labs/composable/v6/app/upgrades/v6_6_4" - - "cosmossdk.io/math" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/bech32" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1" - minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - routertypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types" - ibchookstypes "github.com/notional-labs/composable/v6/x/ibc-hooks/types" - - apptesting "github.com/notional-labs/composable/v6/app" - "github.com/notional-labs/composable/v6/bech32-migration/utils" - "github.com/stretchr/testify/suite" - alliancetypes "github.com/terra-money/alliance/x/alliance/types" -) - -const ( - COIN_DENOM = "stake" - CONNECTION_0 = "connection-0" - PORT_0 = "port-0" - CHANNEL_0 = "channel-0" -) - -type UpgradeTestSuite struct { - apptesting.KeeperTestHelper -} - -func TestUpgradeTestSuite(t *testing.T) { - suite.Run(t, new(UpgradeTestSuite)) -} - -// Ensures the test does not error out. -func (s *UpgradeTestSuite) TestForMigratingNewPrefix() { - // DEFAULT PREFIX: centauri - sdk.SetAddrCacheEnabled(false) - - sdk.GetConfig().SetBech32PrefixForAccount(utils.OldBech32PrefixAccAddr, utils.OldBech32PrefixAccPub) - sdk.GetConfig().SetBech32PrefixForValidator(utils.OldBech32PrefixValAddr, utils.OldBech32PrefixValPub) - sdk.GetConfig().SetBech32PrefixForConsensusNode(utils.OldBech32PrefixConsAddr, utils.OldBech32PrefixConsPub) - - s.Setup(s.T()) - - acc1, proposal := prepareForTestingGovModule(s) - oldConsAddress := prepareForTestingSlashingModule(s) - oldValAddress, oldValAddress2, acc3, afterOneDay := prepareForTestingStakingModule(s) - baseAccount, stakingModuleAccount, baseVestingAccount, continuousVestingAccount, delayedVestingAccount, periodicVestingAccount, permanentLockedAccount := prepareForTestingAuthModule(s) - prepareForTestingAllianceModule(s) - prepareForTestingICAHostModule(s) - prepareForTestingMintModule(s) - prepareForTestingTransferMiddlewareModule(s) - prepareForTestingPfmMiddlewareModule(s) - prepareForTestingIbcTransferMiddlewareModule(s) - prepareForTestingIbcHooksModule(s) - - /* == UPGRADE == */ - upgradeHeight := int64(5) - s.ConfirmUpgradeSucceeded(v6_6_4.UpgradeName, upgradeHeight) - - /* == CHECK AFTER UPGRADE == */ - checkUpgradeGovModule(s, acc1, proposal) - checkUpgradeSlashingModule(s, oldConsAddress) - checkUpgradeStakingModule(s, oldValAddress, oldValAddress2, acc3, afterOneDay) - checkUpgradeAuthModule(s, baseAccount, stakingModuleAccount, baseVestingAccount, continuousVestingAccount, delayedVestingAccount, periodicVestingAccount, permanentLockedAccount) - checkUpgradeAllianceModule(s) - checkUpgradeICAHostModule(s) - checkUpgradeMintModule(s) - checkUpgradeTransferMiddlewareModule(s) - checkUpgradePfmMiddlewareModule(s) - checkUpgradeIbcTransferMiddlewareModule(s) - checkUpgradeIbcHooksMiddlewareModule(s) -} - -func prepareForTestingGovModule(s *UpgradeTestSuite) (sdk.AccAddress, govtypes.Proposal) { - /* PREPARE FOR TESTING GOV MODULE */ - acc1 := s.TestAccs[0] - - // MINT NEW TOKEN FOR BALANCE CHECKING - s.App.BankKeeper.MintCoins(s.Ctx, minttypes.ModuleName, sdk.NewCoins(sdk.NewCoin(COIN_DENOM, math.NewIntFromUint64(100000000)))) - - // VOTE AND DEPOSIT - proposal, err := s.App.GovKeeper.SubmitProposal(s.Ctx, []sdk.Msg{}, "", "test", "description", acc1) - s.Suite.Equal(err, nil) - - s.App.GovKeeper.SetVote(s.Ctx, govtypes.Vote{ - ProposalId: proposal.Id, - Voter: acc1.String(), - Options: nil, - Metadata: "", - }) - - s.App.GovKeeper.SetDeposit(s.Ctx, govtypes.Deposit{ - ProposalId: proposal.Id, - Depositor: acc1.String(), - Amount: sdk.NewCoins(sdk.NewCoin(COIN_DENOM, math.NewIntFromUint64(1))), - }) - - return acc1, proposal -} - -func prepareForTestingSlashingModule(s *UpgradeTestSuite) sdk.ConsAddress { - /* PREPARE FOR TESTING SLASHING MODULE */ - acc2 := s.TestAccs[1] - - oldConsAddress, err := utils.ConsAddressFromOldBech32(acc2.String(), utils.OldBech32PrefixAccAddr) - s.Suite.Equal(err, nil) - - // CHECK ValidatorSigningInfo - s.App.SlashingKeeper.SetValidatorSigningInfo(s.Ctx, oldConsAddress, slashingtypes.ValidatorSigningInfo{ - Address: oldConsAddress.String(), - }) - return oldConsAddress -} - -func prepareForTestingStakingModule(s *UpgradeTestSuite) (sdk.ValAddress, sdk.ValAddress, sdk.AccAddress, time.Time) { - /* PREPARE FOR TESTING SLASHING MODULE */ - acc3 := s.TestAccs[2] - - // MINT NEW TOKEN FOR BALANCE CHECKING - s.App.BankKeeper.MintCoins(s.Ctx, minttypes.ModuleName, sdk.NewCoins(sdk.NewCoin(COIN_DENOM, math.NewIntFromUint64(100000000)))) - s.App.BankKeeper.SendCoinsFromModuleToAccount(s.Ctx, minttypes.ModuleName, acc3, sdk.NewCoins(sdk.NewCoin(COIN_DENOM, math.NewIntFromUint64(100000000)))) - - // validator.OperatorAddress - oldValAddress := s.SetupValidator(stakingtypes.Bonded) - oldValAddress2 := s.SetupValidator(stakingtypes.Bonded) - - // delegation.DelegatorAddress & delegation.ValidatorAddress - s.StakingHelper.Delegate(acc3, oldValAddress, sdk.NewInt(300)) - - // redelegation.DelegatorAddress & redelegation.ValidatorSrcAddress & redelegation.ValidatorDstAddress - completionTime, err := s.App.StakingKeeper.BeginRedelegation(s.Ctx, acc3, oldValAddress, oldValAddress2, sdk.NewDec(100)) - afterOneDay := completionTime.AddDate(0, 0, 1) - s.Require().NoError(err) - - // Undelegate part of the tokens from val2 (test instant unbonding on undelegation started before upgrade) - s.StakingHelper.Undelegate(acc3, oldValAddress, sdk.NewInt(10), true) - - s.App.StakingKeeper.SetRedelegationQueueTimeSlice(s.Ctx, time.Date(2024, time.March, 4, 12, 0, 0, 0, time.UTC), []stakingtypes.DVVTriplet{ - { - DelegatorAddress: s.TestAccs[2].String(), - ValidatorDstAddress: oldValAddress.String(), - ValidatorSrcAddress: oldValAddress2.String(), - }, - }) - - return oldValAddress, oldValAddress2, acc3, afterOneDay -} - -func prepareForTestingAuthModule(s *UpgradeTestSuite) (sdk.AccAddress, sdk.AccAddress, sdk.AccAddress, sdk.AccAddress, sdk.AccAddress, sdk.AccAddress, sdk.AccAddress) { - addr0 := s.TestAccs[0] - baseAccount := authtypes.NewBaseAccount(addr0, nil, 0, 0) - s.App.AccountKeeper.SetAccount(s.Ctx, baseAccount) - - addr6 := s.TestAccs[6] - baseAccount6 := authtypes.NewBaseAccount(addr6, nil, 0, 0) - stakingModuleAccount := authtypes.NewModuleAccount(baseAccount6, "name", "name") - s.App.AccountKeeper.SetAccount(s.Ctx, stakingModuleAccount) - - addr2 := s.TestAccs[2] - baseAccount2 := authtypes.NewBaseAccount(addr2, nil, 0, 0) - baseVestingAccount := vestingtypes.NewBaseVestingAccount(baseAccount2, sdk.NewCoins(sdk.NewCoin(COIN_DENOM, math.NewIntFromUint64(1))), 60) - s.App.AccountKeeper.SetAccount(s.Ctx, baseVestingAccount) - - continuousVestingAccount := CreateVestingAccount(s) - - addr3 := s.TestAccs[3] - baseAccount3 := authtypes.NewBaseAccount(addr3, nil, 0, 0) - baseVestingAccount2 := vestingtypes.NewBaseVestingAccount(baseAccount3, sdk.NewCoins(sdk.NewCoin(COIN_DENOM, math.NewIntFromUint64(1))), 60) - delayedVestingAccount := vestingtypes.NewDelayedVestingAccountRaw(baseVestingAccount2) - s.App.AccountKeeper.SetAccount(s.Ctx, delayedVestingAccount) - - addr4 := s.TestAccs[4] - baseAccount4 := authtypes.NewBaseAccount(addr4, nil, 0, 0) - baseVestingAccount3 := vestingtypes.NewBaseVestingAccount(baseAccount4, sdk.NewCoins(sdk.NewCoin(COIN_DENOM, math.NewIntFromUint64(1))), 60) - periodicVestingAccount := vestingtypes.NewPeriodicVestingAccountRaw(baseVestingAccount3, 0, vestingtypes.Periods{}) - s.App.AccountKeeper.SetAccount(s.Ctx, periodicVestingAccount) - - addr5 := s.TestAccs[5] - baseAccount5 := authtypes.NewBaseAccount(addr5, nil, 0, 0) - permanentLockedAccount := vestingtypes.NewPermanentLockedAccount(baseAccount5, sdk.NewCoins(sdk.NewCoin(COIN_DENOM, math.NewIntFromUint64(1)))) - s.App.AccountKeeper.SetAccount(s.Ctx, permanentLockedAccount) - - return baseAccount.GetAddress(), stakingModuleAccount.GetAddress(), baseVestingAccount.GetAddress(), continuousVestingAccount.GetAddress(), delayedVestingAccount.GetAddress(), periodicVestingAccount.GetAddress(), permanentLockedAccount.GetAddress() -} - -func prepareForTestingICAHostModule(s *UpgradeTestSuite) { - acc1 := s.TestAccs[0] - s.App.ICAHostKeeper.SetInterchainAccountAddress(s.Ctx, CONNECTION_0, PORT_0, acc1.String()) -} - -func prepareForTestingMintModule(s *UpgradeTestSuite) { - acc1 := s.TestAccs[0] - s.App.MintKeeper.SetAllowedAddress(s.Ctx, acc1.String()) -} - -func prepareForTestingAllianceModule(s *UpgradeTestSuite) { - oldValAddress := s.SetupValidator(stakingtypes.Bonded) - _, bz, _ := bech32.DecodeAndConvert(oldValAddress.String()) - oldBech32Addr, _ := bech32.ConvertAndEncode(utils.OldBech32PrefixValAddr, bz) - - s.App.AllianceKeeper.InitGenesis(s.Ctx, &alliancetypes.GenesisState{ - ValidatorInfos: []alliancetypes.ValidatorInfoState{{ - ValidatorAddress: oldBech32Addr, - Validator: alliancetypes.NewAllianceValidatorInfo(), - }}, - }) -} - -func prepareForTestingTransferMiddlewareModule(s *UpgradeTestSuite) { - acc1 := s.TestAccs[0] - s.App.TransferMiddlewareKeeper.SetAllowRlyAddress(s.Ctx, acc1.String()) -} - -func prepareForTestingPfmMiddlewareModule(s *UpgradeTestSuite) { - store := s.Ctx.KVStore(s.App.GetKey(routertypes.StoreKey)) - inFlightPacket := routertypes.InFlightPacket{ - PacketData: []byte("{\"amount\":\"10000\",\"denom\":\"transfer/channel-6660/ppica\",\"memo\":\"{\\\"forward\\\":{\\\"receiver\\\":\\\"osmo1wkjvpgkuchq0r8425g4z4sf6n85zj5wth3u77y\\\",\\\"port\\\":\\\"transfer\\\",\\\"channel\\\":\\\"channel-9\\\",\\\"timeout\\\":600000000000,\\\"retries\\\":0}}\",\"receiver\":\"centauri1wkjvpgkuchq0r8425g4z4sf6n85zj5wtmqzjv9\",\"sender\":\"osmo1wkjvpgkuchq0r8425g4z4sf6n85zj5wth3u77y\"}"), - OriginalSenderAddress: "centauri1wkjvpgkuchq0r8425g4z4sf6n85zj5wtmqzjv9", - RefundChannelId: "channel-9", - RefundPortId: "transfer", - RefundSequence: 18, - PacketSrcPortId: "transfer", - PacketSrcChannelId: "channel-66660", - - PacketTimeoutTimestamp: 1712153063084849609, - PacketTimeoutHeight: "5-123", - - RetriesRemaining: int32(0), - Timeout: uint64(600000000000), - Nonrefundable: false, - } - - encCdc := apptesting.MakeEncodingConfig() - - key := routertypes.RefundPacketKey("channel-9", "transfer", 0) - bz := encCdc.Amino.MustMarshal(&inFlightPacket) - store.Set(key, bz) - - key = routertypes.RefundPacketKey("channel-9", "transfer", 2) - inFlightPacket.OriginalSenderAddress = "centauri1hj5fveer5cjtn4wd6wstzugjfdxzl0xpzxlwgs" - bz = encCdc.Amino.MustMarshal(&inFlightPacket) - store.Set(key, bz) -} - -func prepareForTestingIbcTransferMiddlewareModule(s *UpgradeTestSuite) { - store := s.Ctx.KVStore(s.App.GetKey(ibctransfermiddlewaretypes.StoreKey)) - var fees []*ibctransfermiddlewaretypes.ChannelFee - fees = append(fees, &ibctransfermiddlewaretypes.ChannelFee{ - Channel: "channel-7", - AllowedTokens: []*ibctransfermiddlewaretypes.CoinItem{{ - MinFee: sdk.Coin{}, - Percentage: 20, - }}, - FeeAddress: "centauri1hj5fveer5cjtn4wd6wstzugjfdxzl0xpzxlwgs", - MinTimeoutTimestamp: 0, - }) - fees = append(fees, &ibctransfermiddlewaretypes.ChannelFee{ - Channel: "channel-9", - AllowedTokens: []*ibctransfermiddlewaretypes.CoinItem{{ - MinFee: sdk.Coin{}, - Percentage: 10, - }}, - FeeAddress: "centauri1hj5fveer5cjtn4wd6wstzugjfdxzl0xpzxlwgs", - MinTimeoutTimestamp: 0, - }) - params := ibctransfermiddlewaretypes.Params{ChannelFees: fees} - encCdc := apptesting.MakeEncodingConfig() - bz := encCdc.Amino.MustMarshal(¶ms) - store.Set(ibctransfermiddlewaretypes.ParamsKey, bz) -} - -func prepareForTestingIbcHooksModule(s *UpgradeTestSuite) { - store := s.Ctx.KVStore(s.App.GetKey(ibchookstypes.StoreKey)) - store.Set(ibchookskeeper.GetPacketKey("channel-2", 2), []byte("centauri1hj5fveer5cjtn4wd6wstzugjfdxzl0xpzxlwgs")) - store.Set(ibchookskeeper.GetPacketKey("channel-4", 2), []byte("centauri1wkjvpgkuchq0r8425g4z4sf6n85zj5wtmqzjv9")) -} - -func checkUpgradeGovModule(s *UpgradeTestSuite, acc1 sdk.AccAddress, proposal govtypes.Proposal) { - // CONVERT ACC TO NEW PREFIX - _, bz, _ := bech32.DecodeAndConvert(acc1.String()) - newBech32Addr, _ := bech32.ConvertAndEncode(utils.NewBech32PrefixAccAddr, bz) - newAddr, err := utils.AccAddressFromOldBech32(newBech32Addr, utils.NewBech32PrefixAccAddr) - s.Suite.Equal(err, nil) - - // CHECK PROPOSAL - proposal, found := s.App.GovKeeper.GetProposal(s.Ctx, proposal.Id) - s.Suite.Equal(found, true) - s.Suite.Equal(proposal.Proposer, newBech32Addr) - - // CHECK VOTER AND DEPOSITER OF NEW ADDRESS - existed_proposal, _ := s.App.GovKeeper.GetProposal(s.Ctx, proposal.Id) - s.Suite.Equal(existed_proposal.Proposer, newBech32Addr) - - vote, found := s.App.GovKeeper.GetVote(s.Ctx, proposal.Id, newAddr) - s.Suite.Equal(found, true) - s.Suite.Equal(vote.Voter, newBech32Addr) - - deposit, found := s.App.GovKeeper.GetDeposit(s.Ctx, proposal.Id, newAddr) - s.Suite.Equal(found, true) - s.Suite.Equal(deposit.Depositor, newBech32Addr) -} - -func checkUpgradeSlashingModule(s *UpgradeTestSuite, oldConsAddress sdk.ConsAddress) { - // CONVERT TO ACC TO NEW PREFIX - _, bz, _ := bech32.DecodeAndConvert(oldConsAddress.String()) - newBech32Addr, _ := bech32.ConvertAndEncode(utils.NewBech32PrefixConsAddr, bz) - newAddr, err := utils.ConsAddressFromOldBech32(newBech32Addr, utils.NewBech32PrefixConsAddr) - s.Suite.Equal(err, nil) - - valSigningInfo, found := s.App.SlashingKeeper.GetValidatorSigningInfo(s.Ctx, newAddr) - s.Suite.Equal(found, true) - s.Suite.Equal(valSigningInfo.Address, newBech32Addr) -} - -func checkUpgradeStakingModule(s *UpgradeTestSuite, oldValAddress, oldValAddress2 sdk.ValAddress, acc1 sdk.AccAddress, afterOneDay time.Time) { - // CONVERT TO ACC TO NEW PREFIX - _, bz, _ := bech32.DecodeAndConvert(oldValAddress.String()) - newBech32Addr, _ := bech32.ConvertAndEncode(utils.NewBech32PrefixValAddr, bz) - newValAddr, err := utils.ValAddressFromOldBech32(newBech32Addr, utils.NewBech32PrefixValAddr) - s.Suite.Equal(err, nil) - - _, bzVal2, _ := bech32.DecodeAndConvert(oldValAddress2.String()) - newBech32AddrVal2, _ := bech32.ConvertAndEncode(utils.NewBech32PrefixValAddr, bzVal2) - newValAddr2, err := utils.ValAddressFromOldBech32(newBech32AddrVal2, utils.NewBech32PrefixValAddr) - s.Suite.Equal(err, nil) - - _, bz1, _ := bech32.DecodeAndConvert(acc1.String()) - newBech32DelAddr, _ := bech32.ConvertAndEncode(utils.NewBech32PrefixAccAddr, bz1) - newAccAddr, err := utils.AccAddressFromOldBech32(newBech32DelAddr, utils.NewBech32PrefixAccAddr) - s.Suite.Equal(err, nil) - - val, found := s.App.StakingKeeper.GetValidator(s.Ctx, newValAddr) - s.Suite.Equal(found, true) - s.Suite.Equal(val.OperatorAddress, newBech32Addr) - - delegation, found := s.App.StakingKeeper.GetDelegation(s.Ctx, newAccAddr, newValAddr) - s.Suite.Equal(found, true) - s.Suite.Equal(delegation.DelegatorAddress, newBech32DelAddr) - s.Suite.Equal(delegation.ValidatorAddress, newBech32Addr) - - unbonding, found := s.App.StakingKeeper.GetUnbondingDelegation(s.Ctx, newAccAddr, newValAddr) - s.Suite.Equal(found, true) - s.Suite.Equal(unbonding.DelegatorAddress, newBech32DelAddr) - s.Suite.Equal(unbonding.ValidatorAddress, newBech32Addr) - - s.Ctx = s.Ctx.WithBlockTime(afterOneDay) - - redelegation, found := s.App.StakingKeeper.GetRedelegation(s.Ctx, newAccAddr, newValAddr, newValAddr2) - s.Suite.Equal(found, true) - s.Suite.Equal(redelegation.DelegatorAddress, newBech32DelAddr) - s.Suite.Equal(redelegation.ValidatorSrcAddress, newBech32Addr) - s.Suite.Equal(redelegation.ValidatorDstAddress, newBech32AddrVal2) - - RedelegationQueueTimeSlice := s.App.StakingKeeper.GetRedelegationQueueTimeSlice(s.Ctx, time.Date(2024, time.March, 4, 12, 0, 0, 0, time.UTC)) - s.Suite.Equal(strings.Contains(RedelegationQueueTimeSlice[0].DelegatorAddress, "pica"), true) - s.Suite.Equal(strings.Contains(RedelegationQueueTimeSlice[0].ValidatorDstAddress, "pica"), true) - s.Suite.Equal(strings.Contains(RedelegationQueueTimeSlice[0].ValidatorSrcAddress, "pica"), true) -} - -func checkUpgradeAuthModule(s *UpgradeTestSuite, baseAccount, stakingModuleAccount, baseVestingAccount, continuousVestingAccount, delayedVestingAccount, periodicVestingAccount, permanentLockedAccount sdk.AccAddress) { - /* CHECK BASE ACCOUNT */ - _, bz, _ := bech32.DecodeAndConvert(baseAccount.String()) - newBech32AddrBaseAccount, _ := bech32.ConvertAndEncode(utils.NewBech32PrefixAccAddr, bz) - var newPrefixAddr authtypes.AccountI - newPrefixAddr = s.App.AccountKeeper.GetAccount(s.Ctx, baseAccount) - switch acci := newPrefixAddr.(type) { - case *authtypes.BaseAccount: - acc := acci - s.Suite.Equal(acc.Address, newBech32AddrBaseAccount) - default: - s.Suite.NotNil(nil) - } - - /* CHECK MODULE ACCOUNT */ - _, bz, _ = bech32.DecodeAndConvert(stakingModuleAccount.String()) - newBech32AddrModuleAccount, _ := bech32.ConvertAndEncode(utils.NewBech32PrefixAccAddr, bz) - newPrefixAddr = s.App.AccountKeeper.GetAccount(s.Ctx, stakingModuleAccount) - switch acci := newPrefixAddr.(type) { - case *authtypes.ModuleAccount: - acc := acci - s.Suite.Equal(acc.Address, newBech32AddrModuleAccount) - default: - s.Suite.NotNil(nil) - } - - /* CHECK BASE VESTING ACCOUNT */ - _, bz, _ = bech32.DecodeAndConvert(baseVestingAccount.String()) - newBech32AddrBaseVestingAccount, _ := bech32.ConvertAndEncode(utils.NewBech32PrefixAccAddr, bz) - newPrefixAddr = s.App.AccountKeeper.GetAccount(s.Ctx, baseVestingAccount) - switch acci := newPrefixAddr.(type) { - case *vestingtypes.BaseVestingAccount: - acc := acci - s.Suite.Equal(acc.Address, newBech32AddrBaseVestingAccount) - default: - s.Suite.NotNil(nil) - } - - // CHECK CONTINUOUS VESTING ACCOUNT AND MULTISIG - _, bz, _ = bech32.DecodeAndConvert(continuousVestingAccount.String()) - newBech32AddrConVestingAccount, _ := bech32.ConvertAndEncode(utils.NewBech32PrefixAccAddr, bz) - newPrefixAddr = s.App.AccountKeeper.GetAccount(s.Ctx, continuousVestingAccount) - switch acci := newPrefixAddr.(type) { - case *vestingtypes.ContinuousVestingAccount: - acc := acci - s.Suite.Equal(acc.Address, newBech32AddrConVestingAccount) - default: - s.Suite.NotNil(nil) - } - - // CHECK DELAYED VESTING ACCOUNT - _, bz, _ = bech32.DecodeAndConvert(delayedVestingAccount.String()) - newBech32AddrDelayedVestingAccount, _ := bech32.ConvertAndEncode(utils.NewBech32PrefixAccAddr, bz) - newPrefixAddr = s.App.AccountKeeper.GetAccount(s.Ctx, delayedVestingAccount) - switch acci := newPrefixAddr.(type) { - case *vestingtypes.DelayedVestingAccount: - acc := acci - s.Suite.Equal(acc.Address, newBech32AddrDelayedVestingAccount) - default: - s.Suite.NotNil(nil) - } - - // CHECK PERIODIC VESTING ACCOUNT - _, bz, _ = bech32.DecodeAndConvert(periodicVestingAccount.String()) - newBech32AddrPeriodicVestingAccount, _ := bech32.ConvertAndEncode(utils.NewBech32PrefixAccAddr, bz) - newPrefixAddr = s.App.AccountKeeper.GetAccount(s.Ctx, periodicVestingAccount) - switch acci := newPrefixAddr.(type) { - case *vestingtypes.PeriodicVestingAccount: - acc := acci - s.Suite.Equal(acc.Address, newBech32AddrPeriodicVestingAccount) - default: - s.Suite.NotNil(nil) - } - - // CHECK PERMANENT LOCKED ACCOUNT - _, bz, _ = bech32.DecodeAndConvert(permanentLockedAccount.String()) - newBech32AddrPermanentVestingAccount, _ := bech32.ConvertAndEncode(utils.NewBech32PrefixAccAddr, bz) - newPrefixAddr = s.App.AccountKeeper.GetAccount(s.Ctx, permanentLockedAccount) - switch acci := newPrefixAddr.(type) { - case *vestingtypes.PermanentLockedAccount: - acc := acci - s.Suite.Equal(acc.Address, newBech32AddrPermanentVestingAccount) - default: - s.Suite.NotNil(nil) - } -} - -func checkUpgradeAllianceModule(s *UpgradeTestSuite) { - // the validator address in alliance genesis file is converted into accAddr type - // and then used for key storage - // so the migration do not affect this module - genesis := s.App.AllianceKeeper.ExportGenesis(s.Ctx) - s.Suite.Equal(strings.Contains(genesis.ValidatorInfos[0].ValidatorAddress, "pica"), true) -} - -func checkUpgradeICAHostModule(s *UpgradeTestSuite) { - acc1 := s.TestAccs[0] - interchainAccount, _ := s.App.ICAHostKeeper.GetInterchainAccountAddress(s.Ctx, CONNECTION_0, PORT_0) - s.Suite.Equal(acc1.String(), interchainAccount) -} - -func checkUpgradeMintModule(s *UpgradeTestSuite) { - acc1 := s.TestAccs[0] - found := s.App.MintKeeper.IsAllowedAddress(s.Ctx, acc1.String()) - s.Suite.Equal(found, true) -} - -func checkUpgradeTransferMiddlewareModule(s *UpgradeTestSuite) { - acc1 := s.TestAccs[0] - found := s.App.TransferMiddlewareKeeper.HasAllowRlyAddress(s.Ctx, acc1.String()) - s.Suite.Equal(found, true) -} - -func checkUpgradePfmMiddlewareModule(s *UpgradeTestSuite) { - data := s.App.RouterKeeper.GetAndClearInFlightPacket(s.Ctx, "channel-9", "transfer", 0) - s.Suite.Equal("pica1wkjvpgkuchq0r8425g4z4sf6n85zj5wtykvtv3", data.OriginalSenderAddress) - - data = s.App.RouterKeeper.GetAndClearInFlightPacket(s.Ctx, "channel-9", "transfer", 2) - s.Suite.Equal("pica1hj5fveer5cjtn4wd6wstzugjfdxzl0xpas3hgy", data.OriginalSenderAddress) -} - -func checkUpgradeIbcTransferMiddlewareModule(s *UpgradeTestSuite) { - data := s.App.IbcTransferMiddlewareKeeper.GetChannelFeeAddress(s.Ctx, "channel-9") - s.Suite.Equal("pica1hj5fveer5cjtn4wd6wstzugjfdxzl0xpas3hgy", data) - - data = s.App.IbcTransferMiddlewareKeeper.GetChannelFeeAddress(s.Ctx, "channel-7") - s.Suite.Equal("pica1hj5fveer5cjtn4wd6wstzugjfdxzl0xpas3hgy", data) - data = s.App.IbcTransferMiddlewareKeeper.GetChannelFeeAddress(s.Ctx, "channel-1") - s.Suite.Equal("", data) -} - -func checkUpgradeIbcHooksMiddlewareModule(s *UpgradeTestSuite) { - data := s.App.IBCHooksKeeper.GetPacketCallback(s.Ctx, "channel-2", 2) - s.Suite.Equal("pica1hj5fveer5cjtn4wd6wstzugjfdxzl0xpas3hgy", data) - - data = s.App.IBCHooksKeeper.GetPacketCallback(s.Ctx, "channel-4", 2) - s.Suite.Equal("pica1wkjvpgkuchq0r8425g4z4sf6n85zj5wtykvtv3", data) - - data = s.App.IBCHooksKeeper.GetPacketCallback(s.Ctx, "channel-2", 1) - s.Suite.Equal("", data) -} - -func CreateVestingAccount(s *UpgradeTestSuite, -) vestingtypes.ContinuousVestingAccount { - str := `{"@type":"/cosmos.vesting.v1beta1.ContinuousVestingAccount","base_vesting_account":{"base_account":{"address":"centauri1alga5e8vr6ccr9yrg0kgxevpt5xgmgrvfkc5p8","pub_key":{"@type":"/cosmos.crypto.multisig.LegacyAminoPubKey","threshold":4,"public_keys":[{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AlnzK22KrkylnvTCvZZc8eZnydtQuzCWLjJJSMFUvVHf"},{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Aiw2Ftg+fnoHDU7M3b0VMRsI0qurXlerW0ahtfzSDZA4"},{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AvEHv+MVYRVau8FbBcJyG0ql85Tbbn7yhSA0VGmAY4ku"},{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Az5VHWqi3zMJu1rLGcu2EgNXLLN+al4Dy/lj6UZTzTCl"},{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Ai4GlSH3uG+joMnAFbQC3jQeHl9FPvVTlRmwIFt7d7TI"},{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"A2kAzH2bZr530jmFq/bRFrT2q8SRqdnfIebba+YIBqI1"}]},"account_number":46,"sequence":27},"original_vesting":[{"denom":"stake","amount":"22165200000000"}],"delegated_free":[{"denom":"stake","amount":"443382497453"}],"delegated_vesting":[{"denom":"stake","amount":"22129422502547"}],"end_time":1770994800},"start_time":1676300400}` - - var acc vestingtypes.ContinuousVestingAccount - if err := json.Unmarshal([]byte(str), &acc); err != nil { - panic(err) - } - - err := banktestutil.FundAccount(s.App.BankKeeper, s.Ctx, acc.BaseAccount.GetAddress(), - acc.GetOriginalVesting()) - if err != nil { - panic(err) - } - - err = banktestutil.FundAccount(s.App.BankKeeper, s.Ctx, acc.BaseAccount.GetAddress(), - sdk.NewCoins(sdk.NewCoin(COIN_DENOM, math.NewIntFromUint64(1)))) - if err != nil { - panic(err) - } - - s.App.AccountKeeper.SetAccount(s.Ctx, &acc) - return acc -} diff --git a/app/upgrades/v7_0_1/constants.go b/app/upgrades/v7_0_1/constants.go new file mode 100644 index 000000000..293b7c65e --- /dev/null +++ b/app/upgrades/v7_0_1/constants.go @@ -0,0 +1,26 @@ +package v7_0_1 + +import ( + store "cosmossdk.io/store/types" + circuittypes "cosmossdk.io/x/circuit/types" + "github.com/notional-labs/composable/v6/app/upgrades" + + icacontrollertypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller/types" +) + +const ( + // UpgradeName defines the on-chain upgrade name for the composable upgrade. + UpgradeName = "v7_0_1" +) + +var Upgrade = upgrades.Upgrade{ + UpgradeName: UpgradeName, + CreateUpgradeHandler: CreateUpgradeHandler, + StoreUpgrades: store.StoreUpgrades{ + Added: []string{ + circuittypes.ModuleName, + icacontrollertypes.StoreKey, + }, + Deleted: []string{"alliance"}, + }, +} diff --git a/app/upgrades/v7_0_1/upgrade.go b/app/upgrades/v7_0_1/upgrade.go new file mode 100644 index 000000000..7d86057d7 --- /dev/null +++ b/app/upgrades/v7_0_1/upgrade.go @@ -0,0 +1,70 @@ +package v7_0_1 + +import ( + "context" + "encoding/hex" + "fmt" + + upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/cosmos/cosmos-sdk/runtime" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types" + + "github.com/cosmos/cosmos-sdk/codec" + "github.com/notional-labs/composable/v6/app/keepers" + "github.com/notional-labs/composable/v6/app/upgrades" +) + +func CreateUpgradeHandler( + mm *module.Manager, + configurator module.Configurator, + _ upgrades.BaseAppParamManager, + codec codec.Codec, + keepers *keepers.AppKeepers, +) upgradetypes.UpgradeHandler { + return func(goCtx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + fmt.Println("start v7.0.1 upgrade") + ctx := sdk.UnwrapSDKContext(goCtx) + store := runtime.NewKVStoreService(keepers.GetKVStoreKey()[types.StoreKey]).OpenKVStore(ctx) + + // list code in testnet + listCode := []string{ + "58c7623a3ab78f4cb2e4c5d02876ac36c3b38bb472118173a7ec7faa688a66d2", // local key + "13ef83deb0dd1140f2e171aa72abbedee604e5903c4fb2a99da8bb13eda4dfb1", + "1cff60adf40895b5fccb1e9ce6305a65ae01400a02cc4ded2cf3669221905adc", + "24d21d60aa3bc4e84ddf21493ad1ada891a9af527def252edbba277ee7f05276", + "292a4db6c6ea2cd0cc9852b4313bfc8c3727de5762f46552b59a7df8a33f14b2", + "391add0fb14814296d134709797e697043c297841b23b14077bcaa09d67e7957", + "8efc525173fb23ca7d62e9d6bd0a1ee98fd8f3e2374ae1ea8bb59a3ccdf34295", + "936c3a1931746f9471d7088b236445979aabfe3af5378cdca67a032f5c4e4ed0", + "9636e7c7e357280260d6db81df78ec78226c746239636cc0e42e5e306ab8e199", + "b2adbd22fc3c410e781baeba5a655a0f0f6a009705ffe02b128ae6b4eabe3cf8", + "d2e8126bc2226fb57e4fa8462da2a3441c3bead05c1161e848c944f99d9119ab", + "ee97c9bd49a83282c2be1cd8cef0f2f55feb6d2d4c63ec3d27d69c252bd78531", + "ef52ef690dc5ec88fd4dd78dc8fd7582904492284b0c290a12ef343d8a541056", + "fccfde77e9318b1316e545a34414b5fc3e6cf82a5fe432815b956153c2e655bc", + } + listCheckSum := [][]byte{} + for _, code := range listCode { + checksumStr, err := hex.DecodeString(code) + if err != nil { + panic(err) + } + listCheckSum = append(listCheckSum, checksumStr) + } + + // Register SendEnabled for legacy subspace + + checksum := types.Checksums{Checksums: listCheckSum} + bz, err := codec.Marshal(&checksum) + if err != nil { + panic(err) + } + err = store.Set([]byte(types.KeyChecksums), bz) + if err != nil { + panic(err) + } + return mm.RunMigrations(ctx, configurator, vm) + } +} diff --git a/bech32-migration/auth/auth.go b/bech32-migration/auth/auth.go deleted file mode 100644 index 1bb3f829f..000000000 --- a/bech32-migration/auth/auth.go +++ /dev/null @@ -1,75 +0,0 @@ -package auth - -import ( - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - - storetypes "github.com/cosmos/cosmos-sdk/store/types" - "github.com/cosmos/cosmos-sdk/x/auth/types" - vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - - "github.com/notional-labs/composable/v6/bech32-migration/utils" -) - -func MigrateAddressBech32(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) { - ctx.Logger().Info("Migration of address bech32 for auth module begin") - migratedAccountCount := uint64(0) - migratedAccountTypesStat := map[string]uint64{} - utils.IterateStoreByPrefix(ctx, storeKey, types.AddressStoreKeyPrefix, func(bz []byte) []byte { - var accountI types.AccountI - err := cdc.UnmarshalInterface(bz, &accountI) - if err != nil { - panic(err) - } - switch acci := accountI.(type) { - case *types.BaseAccount: - acc := acci - acc.Address = utils.ConvertAccAddr(acc.Address) - migratedAccountTypesStat["BaseAccount"]++ - case *types.ModuleAccount: - acc := acci - acc.Address = utils.ConvertAccAddr(acc.Address) - migratedAccountTypesStat["ModuleAccount"]++ - case *vestingtypes.BaseVestingAccount: - acc := acci - acc.Address = utils.ConvertAccAddr(acc.Address) - migratedAccountTypesStat["BaseVestingAccount"]++ - case *vestingtypes.ContinuousVestingAccount: - acc := acci - acc.Address = utils.ConvertAccAddr(acc.Address) - migratedAccountTypesStat["ContinuousVestingAccount"]++ - case *vestingtypes.DelayedVestingAccount: - acc := acci - acc.Address = utils.ConvertAccAddr(acc.Address) - migratedAccountTypesStat["DelayedVestingAccount"]++ - case *vestingtypes.PeriodicVestingAccount: - acc := acci - acc.Address = utils.ConvertAccAddr(acc.Address) - migratedAccountTypesStat["PeriodicVestingAccount"]++ - case *vestingtypes.PermanentLockedAccount: - acc := acci - acc.Address = utils.ConvertAccAddr(acc.Address) - migratedAccountTypesStat["PermanentLockedAccount"]++ - default: - ctx.Logger().Info( - "Warning: unknown account type, skipping migration", - "address", accountI.GetAddress().String(), - "account_number", accountI.GetAccountNumber(), - "public_key", accountI.GetPubKey(), - "sequence", accountI.GetSequence(), - ) - return bz - } - bz, err = cdc.MarshalInterface(accountI) - if err != nil { - panic(err) - } - migratedAccountCount++ - return bz - }) - ctx.Logger().Info( - "Migration of address bech32 for auth module done", - "migrated_account_count", migratedAccountCount, - "migrated_account_types_stat", migratedAccountTypesStat, - ) -} diff --git a/bech32-migration/gov/gov.go b/bech32-migration/gov/gov.go deleted file mode 100644 index 54eaebb12..000000000 --- a/bech32-migration/gov/gov.go +++ /dev/null @@ -1,55 +0,0 @@ -package gov - -import ( - "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - - "github.com/cosmos/cosmos-sdk/x/gov/types" - v1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" - "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - - "github.com/notional-labs/composable/v6/bech32-migration/utils" -) - -func MigrateAddressBech32(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) { - ctx.Logger().Info("Migration of address bech32 for gov module begin") - proposalCount := uint64(0) - utils.IterateStoreByPrefix(ctx, storeKey, types.ProposalsKeyPrefix, func(bz []byte) []byte { - proposal := v1.Proposal{} - cdc.MustUnmarshal(bz, &proposal) - proposal.Proposer = utils.SafeConvertAddress(proposal.Proposer) - proposalCount++ - return cdc.MustMarshal(&proposal) - }) - voteCount := uint64(0) - utils.IterateStoreByPrefix(ctx, storeKey, types.VotesKeyPrefix, func(bz []byte) []byte { - vote := v1beta1.Vote{} - err := cdc.Unmarshal(bz, &vote) - if err != nil { - vote := v1.Vote{} - cdc.MustUnmarshal(bz, &vote) - vote.Voter = utils.SafeConvertAddress(vote.Voter) - voteCount++ - return cdc.MustMarshal(&vote) - } - vote.Voter = utils.SafeConvertAddress(vote.Voter) - voteCount++ - return cdc.MustMarshal(&vote) - }) - depositCount := uint64(0) - utils.IterateStoreByPrefix(ctx, storeKey, types.DepositsKeyPrefix, func(bz []byte) []byte { - deposit := v1beta1.Deposit{} - err := cdc.Unmarshal(bz, &deposit) - if err != nil { - vote := v1.Deposit{} - cdc.MustUnmarshal(bz, &vote) - deposit.Depositor = utils.SafeConvertAddress(deposit.Depositor) - depositCount++ - return cdc.MustMarshal(&deposit) - } - deposit.Depositor = utils.SafeConvertAddress(deposit.Depositor) - depositCount++ - return cdc.MustMarshal(&deposit) - }) -} diff --git a/bech32-migration/ibchooks/ibchooks.go b/bech32-migration/ibchooks/ibchooks.go deleted file mode 100644 index 0f62560f0..000000000 --- a/bech32-migration/ibchooks/ibchooks.go +++ /dev/null @@ -1,29 +0,0 @@ -package ibchooks - -import ( - "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/notional-labs/composable/v6/bech32-migration/utils" -) - -func MigrateAddressBech32(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) { - ctx.Logger().Info("Migration of address bech32 for ibchooks module begin") - totalAddr := uint64(0) - store := ctx.KVStore(storeKey) - channelKey := []byte("channel") - iterator := sdk.KVStorePrefixIterator(store, channelKey) - for ; iterator.Valid(); iterator.Next() { - totalAddr++ - fullKey := iterator.Key() - contract := string(store.Get(fullKey)) - contract = utils.SafeConvertAddress(contract) - totalAddr++ - store.Set(fullKey, []byte(contract)) - } - - ctx.Logger().Info( - "Migration of address bech32 for ibchooks module done", - "totalAddr", totalAddr, - ) -} diff --git a/bech32-migration/ibctransfermiddleware/ibctransfermiddleware.go b/bech32-migration/ibctransfermiddleware/ibctransfermiddleware.go deleted file mode 100644 index c4f1ad646..000000000 --- a/bech32-migration/ibctransfermiddleware/ibctransfermiddleware.go +++ /dev/null @@ -1,32 +0,0 @@ -package ibctransfermiddleware - -import ( - "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/notional-labs/composable/v6/bech32-migration/utils" - "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types" -) - -func MigrateAddressBech32(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) { - ctx.Logger().Info("Migration of address bech32 for ibctransfermiddleware module begin") - totalAddr := uint64(0) - store := ctx.KVStore(storeKey) - bz := store.Get(types.ParamsKey) - if bz == nil { - return - } - var params types.Params - cdc.MustUnmarshal(bz, ¶ms) - for i := range params.ChannelFees { - totalAddr++ - params.ChannelFees[i].FeeAddress = utils.SafeConvertAddress(params.ChannelFees[i].FeeAddress) - } - bz = cdc.MustMarshal(¶ms) - store.Set(types.ParamsKey, bz) - - ctx.Logger().Info( - "Migration of address bech32 for ibctransfermiddleware module done", - "totalAddr", totalAddr, - ) -} diff --git a/bech32-migration/ica/ica.go b/bech32-migration/ica/ica.go deleted file mode 100644 index d23b4e390..000000000 --- a/bech32-migration/ica/ica.go +++ /dev/null @@ -1,33 +0,0 @@ -package ica - -import ( - "strings" - - "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - "github.com/notional-labs/composable/v6/bech32-migration/utils" -) - -func MigrateAddressBech32(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) { - ctx.Logger().Info("Migration of address bech32 for ica host module begin") - interchainAccountCount := uint64(0) - - store := ctx.KVStore(storeKey) - iterator := sdk.KVStorePrefixIterator(store, []byte(icatypes.OwnerKeyPrefix)) - - for ; iterator.Valid(); iterator.Next() { - keySplit := strings.Split(string(iterator.Key()), "/") - interchainAccountCount++ - connectionID := keySplit[2] - portID := keySplit[1] - address := utils.ConvertAccAddr(string(iterator.Value())) - store.Set(icatypes.KeyOwnerAccount(portID, connectionID), []byte(address)) - } - - ctx.Logger().Info( - "Migration of address bech32 for ica host module done", - "interchain_account_count", interchainAccountCount, - ) -} diff --git a/bech32-migration/mint/mint.go b/bech32-migration/mint/mint.go deleted file mode 100644 index d3144c953..000000000 --- a/bech32-migration/mint/mint.go +++ /dev/null @@ -1,32 +0,0 @@ -package mint - -import ( - "strings" - - "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/notional-labs/composable/v6/bech32-migration/utils" - "github.com/notional-labs/composable/v6/x/mint/types" -) - -func MigrateAddressBech32(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) { - ctx.Logger().Info("Migration of address bech32 for mint module begin") - interchainAccountCount := uint64(0) - - store := ctx.KVStore(storeKey) - iterator := sdk.KVStorePrefixIterator(store, types.AllowedAddressKey) - - for ; iterator.Valid(); iterator.Next() { - interchainAccountCount++ - trimedAddr := strings.Replace(string(iterator.Key()), "\x01", "", 1) - newPrefixAddr := utils.ConvertAccAddr(trimedAddr) - key := types.GetAllowedAddressStoreKey(newPrefixAddr) - store.Set(key, []byte{1}) - } - - ctx.Logger().Info( - "Migration of address bech32 for mint module done", - "key_changed_count", interchainAccountCount, - ) -} diff --git a/bech32-migration/pfmmiddleware/pfmmiddleware.go b/bech32-migration/pfmmiddleware/pfmmiddleware.go deleted file mode 100644 index a7f26407b..000000000 --- a/bech32-migration/pfmmiddleware/pfmmiddleware.go +++ /dev/null @@ -1,67 +0,0 @@ -package pfmmiddleware - -import ( - "encoding/json" - - "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - routertypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/notional-labs/composable/v6/app/keepers" - "github.com/notional-labs/composable/v6/bech32-migration/utils" -) - -func MigrateAddressBech32(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec, keepers *keepers.AppKeepers) { - ctx.Logger().Info("Migration of address bech32 for pfmmiddleware module begin") - totalAddr := uint64(0) - - store := ctx.KVStore(storeKey) - - channelKey := []byte("channel") - iterator := sdk.KVStorePrefixIterator(store, channelKey) - for ; iterator.Valid(); iterator.Next() { - totalAddr++ - fullKey := iterator.Key() - if !store.Has(fullKey) { - continue - } - bz := store.Get(fullKey) - var inFlightPacket routertypes.InFlightPacket - cdc.MustUnmarshal(bz, &inFlightPacket) - inFlightPacket.OriginalSenderAddress = utils.SafeConvertAddress(inFlightPacket.OriginalSenderAddress) - var data transfertypes.FungibleTokenPacketData - if err := transfertypes.ModuleCdc.UnmarshalJSON(inFlightPacket.PacketData, &data); err != nil { - continue - } - data.Receiver = utils.SafeConvertAddress(data.Receiver) - data.Sender = utils.SafeConvertAddress(data.Sender) - - d := make(map[string]interface{}) - err := json.Unmarshal([]byte(data.Memo), &d) - // parse memo - if err == nil && d["forward"] != nil { - var m routertypes.PacketMetadata - err = json.Unmarshal([]byte(data.Memo), &m) - if err != nil { - continue - } - m.Forward.Receiver = utils.SafeConvertAddress(m.Forward.Receiver) - bzM, err := json.Marshal(m) - if err != nil { - continue - } - data.Memo = string(bzM) - } - bz = cdc.MustMarshal(&data) - inFlightPacket.PacketData = bz - bz = cdc.MustMarshal(&inFlightPacket) - totalAddr++ - store.Set(fullKey, bz) - } - - ctx.Logger().Info( - "Migration of address bech32 for pfmmiddleware module done", - "totalAddr", totalAddr, - ) -} diff --git a/bech32-migration/slashing/slashing.go b/bech32-migration/slashing/slashing.go deleted file mode 100644 index cde06383e..000000000 --- a/bech32-migration/slashing/slashing.go +++ /dev/null @@ -1,27 +0,0 @@ -package slashing - -import ( - "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/slashing/types" - - "github.com/notional-labs/composable/v6/bech32-migration/utils" -) - -func MigrateAddressBech32(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) { - ctx.Logger().Info("Migration of address bech32 for slashing module begin") - validatorSigningInfoCount := uint64(0) - utils.IterateStoreByPrefix(ctx, storeKey, types.ValidatorSigningInfoKeyPrefix, func(bz []byte) []byte { - validatorSigningInfo := types.ValidatorSigningInfo{} - cdc.MustUnmarshal(bz, &validatorSigningInfo) - validatorSigningInfo.Address = utils.ConvertConsAddr(validatorSigningInfo.Address) - validatorSigningInfoCount++ - return cdc.MustMarshal(&validatorSigningInfo) - }) - - ctx.Logger().Info( - "Migration of address bech32 for slashing module done", - "validator_signing_info_count", validatorSigningInfoCount, - ) -} diff --git a/bech32-migration/staking/staking.go b/bech32-migration/staking/staking.go deleted file mode 100644 index 3af0f74ab..000000000 --- a/bech32-migration/staking/staking.go +++ /dev/null @@ -1,110 +0,0 @@ -package staking - -import ( - "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/staking/types" - - "github.com/notional-labs/composable/v6/bech32-migration/utils" -) - -func MigrateAddressBech32(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) { - ctx.Logger().Info("Migration of address bech32 for staking module begin") - validatorCount := uint64(0) - utils.IterateStoreByPrefix(ctx, storeKey, types.ValidatorsKey, func(bz []byte) []byte { - validator := types.MustUnmarshalValidator(cdc, bz) - validator.OperatorAddress = utils.ConvertValAddr(validator.OperatorAddress) - validatorCount++ - return types.MustMarshalValidator(cdc, &validator) - }) - delegationCount := uint64(0) - utils.IterateStoreByPrefix(ctx, storeKey, types.DelegationKey, func(bz []byte) []byte { - delegation := types.MustUnmarshalDelegation(cdc, bz) - delegation.DelegatorAddress = utils.ConvertAccAddr(delegation.DelegatorAddress) - delegation.ValidatorAddress = utils.ConvertValAddr(delegation.ValidatorAddress) - delegationCount++ - return types.MustMarshalDelegation(cdc, delegation) - }) - redelegationCount := uint64(0) - utils.IterateStoreByPrefix(ctx, storeKey, types.RedelegationKey, func(bz []byte) []byte { - redelegation := types.MustUnmarshalRED(cdc, bz) - redelegation.DelegatorAddress = utils.ConvertAccAddr(redelegation.DelegatorAddress) - redelegation.ValidatorSrcAddress = utils.ConvertValAddr(redelegation.ValidatorSrcAddress) - redelegation.ValidatorDstAddress = utils.ConvertValAddr(redelegation.ValidatorDstAddress) - redelegationCount++ - return types.MustMarshalRED(cdc, redelegation) - }) - unbondingDelegationCount := uint64(0) - utils.IterateStoreByPrefix(ctx, storeKey, types.UnbondingDelegationKey, func(bz []byte) []byte { - unbonding := types.MustUnmarshalUBD(cdc, bz) - unbonding.DelegatorAddress = utils.ConvertAccAddr(unbonding.DelegatorAddress) - unbonding.ValidatorAddress = utils.ConvertValAddr(unbonding.ValidatorAddress) - unbondingDelegationCount++ - return types.MustMarshalUBD(cdc, unbonding) - }) - historicalInfoCount := uint64(0) - utils.IterateStoreByPrefix(ctx, storeKey, types.HistoricalInfoKey, func(bz []byte) []byte { - historicalInfo := types.MustUnmarshalHistoricalInfo(cdc, bz) - for i := range historicalInfo.Valset { - historicalInfo.Valset[i].OperatorAddress = utils.ConvertValAddr(historicalInfo.Valset[i].OperatorAddress) - } - historicalInfoCount++ - return cdc.MustMarshal(&historicalInfo) - }) - ctx.Logger().Info( - "Migration of address bech32 for staking module done", - "validator_count", validatorCount, - "delegation_count", delegationCount, - "redelegation_count", redelegationCount, - "unbonding_delegation_count", unbondingDelegationCount, - "historical_info_count", historicalInfoCount, - ) -} - -func MigrateUnbonding(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) { - unbondingQueueKeyCount := uint64(0) - utils.IterateStoreByPrefix(ctx, storeKey, types.UnbondingQueueKey, func(bz []byte) []byte { - pairs := types.DVPairs{} - cdc.MustUnmarshal(bz, &pairs) - for i, pair := range pairs.Pairs { - pairs.Pairs[i].DelegatorAddress = utils.ConvertAccAddr(pair.DelegatorAddress) - pairs.Pairs[i].ValidatorAddress = utils.ConvertValAddr(pair.ValidatorAddress) - } - unbondingQueueKeyCount++ - return cdc.MustMarshal(&pairs) - }) - - redelegationQueueKeyCount := uint64(0) - utils.IterateStoreByPrefix(ctx, storeKey, types.RedelegationQueueKey, func(bz []byte) []byte { - triplets := types.DVVTriplets{} - cdc.MustUnmarshal(bz, &triplets) - - for i, triplet := range triplets.Triplets { - triplets.Triplets[i].DelegatorAddress = utils.ConvertAccAddr(triplet.DelegatorAddress) - triplets.Triplets[i].ValidatorDstAddress = utils.ConvertValAddr(triplet.ValidatorDstAddress) - triplets.Triplets[i].ValidatorSrcAddress = utils.ConvertValAddr(triplet.ValidatorSrcAddress) - } - redelegationQueueKeyCount++ - return cdc.MustMarshal(&triplets) - }) - - validatorQueueKeyCount := uint(0) - utils.IterateStoreByPrefix(ctx, storeKey, types.ValidatorQueueKey, func(bz []byte) []byte { - addrs := types.ValAddresses{} - cdc.MustUnmarshal(bz, &addrs) - - for i, valAddress := range addrs.Addresses { - addrs.Addresses[i] = utils.ConvertValAddr(valAddress) - } - validatorQueueKeyCount++ - return cdc.MustMarshal(&addrs) - }) - - ctx.Logger().Info( - "Migration of address bech32 for staking unboding done", - "unbondingQueueKeyCount", unbondingQueueKeyCount, - "redelegationQueueKeyCount", redelegationQueueKeyCount, - "validatorQueueKeyCount", validatorQueueKeyCount, - ) -} diff --git a/bech32-migration/transfermiddleware/transfermiddleware.go b/bech32-migration/transfermiddleware/transfermiddleware.go deleted file mode 100644 index b28cac2c5..000000000 --- a/bech32-migration/transfermiddleware/transfermiddleware.go +++ /dev/null @@ -1,33 +0,0 @@ -package transfermiddleware - -import ( - "strings" - - "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/notional-labs/composable/v6/bech32-migration/utils" - "github.com/notional-labs/composable/v6/x/transfermiddleware/types" -) - -func MigrateAddressBech32(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) { - ctx.Logger().Info("Migration of address bech32 for transfermiddleware module begin") - allowRelayAddressCount := uint64(0) - - store := ctx.KVStore(storeKey) - - relayAddressPrefix := []byte{1} - iterator := sdk.KVStorePrefixIterator(store, types.KeyRlyAddress) - - for ; iterator.Valid(); iterator.Next() { - allowRelayAddressCount++ - trimedAddr := strings.Replace(string(iterator.Key()), "\x04", "", 1) - newPrefixAddr := utils.ConvertAccAddr(trimedAddr) - store.Set(types.GetKeyByRlyAddress(newPrefixAddr), relayAddressPrefix) - } - - ctx.Logger().Info( - "Migration of address bech32 for transfermiddleware module done", - "allow_relay_address_count", allowRelayAddressCount, - ) -} diff --git a/bech32-migration/utils/utils.go b/bech32-migration/utils/utils.go deleted file mode 100644 index 6d717859c..000000000 --- a/bech32-migration/utils/utils.go +++ /dev/null @@ -1,167 +0,0 @@ -package utils - -import ( - "errors" - "strings" - - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/bech32" -) - -const ( - // OldBech32Prefix defines the Bech32 prefix used for EthAccounts - OldBech32Prefix = "centauri" - - // OldBech32PrefixAccAddr defines the Bech32 prefix of an account's address - OldBech32PrefixAccAddr = OldBech32Prefix - // OldBech32PrefixAccPub defines the Bech32 prefix of an account's public key - OldBech32PrefixAccPub = OldBech32Prefix + sdk.PrefixPublic - // OldBech32PrefixValAddr defines the Bech32 prefix of a validator's operator address - OldBech32PrefixValAddr = OldBech32Prefix + sdk.PrefixValidator + sdk.PrefixOperator - // OldBech32PrefixValPub defines the Bech32 prefix of a validator's operator public key - OldBech32PrefixValPub = OldBech32Prefix + sdk.PrefixValidator + sdk.PrefixOperator + sdk.PrefixPublic - // OldBech32PrefixConsAddr defines the Bech32 prefix of a consensus node address - OldBech32PrefixConsAddr = OldBech32Prefix + sdk.PrefixValidator + sdk.PrefixConsensus - // OldBech32PrefixConsPub defines the Bech32 prefix of a consensus node public key - OldBech32PrefixConsPub = OldBech32Prefix + sdk.PrefixValidator + sdk.PrefixConsensus + sdk.PrefixPublic - - // OldBech32Prefix defines the Bech32 prefix used for EthAccounts - NewBech32Prefix = "pica" - - // NewBech32PrefixAccAddr defines the Bech32 prefix of an account's address - NewBech32PrefixAccAddr = NewBech32Prefix - // NewBech32PrefixAccPub defines the Bech32 prefix of an account's public key - NewBech32PrefixAccPub = NewBech32Prefix + sdk.PrefixPublic - // NewBech32PrefixValAddr defines the Bech32 prefix of a validator's operator address - NewBech32PrefixValAddr = NewBech32Prefix + sdk.PrefixValidator + sdk.PrefixOperator - // NewBech32PrefixValPub defines the Bech32 prefix of a validator's operator public key - NewBech32PrefixValPub = NewBech32Prefix + sdk.PrefixValidator + sdk.PrefixOperator + sdk.PrefixPublic - // NewBech32PrefixConsAddr defines the Bech32 prefix of a consensus node address - NewBech32PrefixConsAddr = NewBech32Prefix + sdk.PrefixValidator + sdk.PrefixConsensus - // NewBech32PrefixConsPub defines the Bech32 prefix of a consensus node public key - NewBech32PrefixConsPub = NewBech32Prefix + sdk.PrefixValidator + sdk.PrefixConsensus + sdk.PrefixPublic -) - -func ConvertValAddr(valAddr string) string { - parsedValAddr, err := ValAddressFromOldBech32(valAddr, OldBech32PrefixValAddr) - _, bz, _ := bech32.DecodeAndConvert(parsedValAddr.String()) - bech32Addr, _ := bech32.ConvertAndEncode(NewBech32PrefixValAddr, bz) - if err != nil { - return valAddr - } - return bech32Addr -} - -func ConvertAccAddr(accAddr string) string { - parsedAccAddr, err := AccAddressFromOldBech32(accAddr, OldBech32PrefixAccAddr) - _, bz, _ := bech32.DecodeAndConvert(parsedAccAddr.String()) - bech32Addr, _ := bech32.ConvertAndEncode(NewBech32PrefixAccAddr, bz) - if err != nil { - panic(err) - } - return bech32Addr -} - -// Input is type string -> need safe convert -func SafeConvertAddress(accAddr string) string { - if len(accAddr) == 0 { - return "" - } - - parsedAccAddr, err := AccAddressFromOldBech32(accAddr, OldBech32PrefixAccAddr) - if err != nil { - return accAddr - } - _, bz, err := bech32.DecodeAndConvert(parsedAccAddr.String()) - if err != nil { - return accAddr - } - bech32Addr, err := bech32.ConvertAndEncode(NewBech32PrefixAccAddr, bz) - if err != nil { - return accAddr - } - - return bech32Addr -} - -func ConvertConsAddr(consAddr string) string { - parsedConsAddr, err := ConsAddressFromOldBech32(consAddr, OldBech32PrefixConsAddr) - _, bz, _ := bech32.DecodeAndConvert(parsedConsAddr.String()) - bech32Addr, _ := bech32.ConvertAndEncode(NewBech32PrefixConsAddr, bz) - if err != nil { - return consAddr - } - return bech32Addr -} - -func IterateStoreByPrefix( - ctx sdk.Context, storeKey storetypes.StoreKey, prefix []byte, - fn func(value []byte) (newValue []byte), -) { - store := ctx.KVStore(storeKey) - iterator := sdk.KVStorePrefixIterator(store, prefix) - defer iterator.Close() - - for ; iterator.Valid(); iterator.Next() { - newValue := fn(iterator.Value()) - store.Set(iterator.Key(), newValue) - } -} - -// AccAddressFromBech32 creates an AccAddress from a Bech32 string. -func AccAddressFromOldBech32(address, prefix string) (addr sdk.AccAddress, err error) { - if len(strings.TrimSpace(address)) == 0 { - return sdk.AccAddress{}, errors.New("empty address string is not allowed") - } - - bz, err := sdk.GetFromBech32(address, prefix) - if err != nil { - return nil, err - } - - err = sdk.VerifyAddressFormat(bz) - if err != nil { - return nil, err - } - - return sdk.AccAddress(bz), nil -} - -// ConsAddressFromBech32 creates a ConsAddress from a Bech32 string. -func ConsAddressFromOldBech32(address, prefix string) (addr sdk.ConsAddress, err error) { - if len(strings.TrimSpace(address)) == 0 { - return sdk.ConsAddress{}, errors.New("empty address string is not allowed") - } - - bz, err := sdk.GetFromBech32(address, prefix) - if err != nil { - return nil, err - } - - err = sdk.VerifyAddressFormat(bz) - if err != nil { - return nil, err - } - - return sdk.ConsAddress(bz), nil -} - -// ValAddressFromBech32 creates a ValAddress from a Bech32 string. -func ValAddressFromOldBech32(address, prefix string) (addr sdk.ValAddress, err error) { - if len(strings.TrimSpace(address)) == 0 { - return sdk.ValAddress{}, errors.New("empty address string is not allowed") - } - - bz, err := sdk.GetFromBech32(address, prefix) - if err != nil { - return nil, err - } - - err = sdk.VerifyAddressFormat(bz) - if err != nil { - return nil, err - } - - return sdk.ValAddress(bz), nil -} diff --git a/bech32-migration/wasm/wasm.go b/bech32-migration/wasm/wasm.go deleted file mode 100644 index 7d57ff654..000000000 --- a/bech32-migration/wasm/wasm.go +++ /dev/null @@ -1,78 +0,0 @@ -package wasm - -import ( - "github.com/CosmWasm/wasmd/x/wasm/types" - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/store/prefix" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - "github.com/notional-labs/composable/v6/bech32-migration/utils" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func MigrateAddressBech32(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) { - migrateCodeInfo(ctx, storeKey, cdc) - migrateContractInfo(ctx, storeKey, cdc) -} - -func migrateCodeInfo(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) { - // Code id - ctx.Logger().Debug("Migrationg of address bech32 for wasm module Code Info begin") - prefixStore := prefix.NewStore(ctx.KVStore(storeKey), types.CodeKeyPrefix) - iter := prefixStore.Iterator(nil, nil) - defer iter.Close() - - totalMigratedCodeId := uint64(0) - for ; iter.Valid(); iter.Next() { - // get code info value - var c types.CodeInfo - cdc.MustUnmarshal(iter.Value(), &c) - - // Update info - c.Creator = utils.SafeConvertAddress(c.Creator) - c.InstantiateConfig.Address = utils.SafeConvertAddress(c.InstantiateConfig.Address) - for i := range c.InstantiateConfig.Addresses { - c.InstantiateConfig.Addresses[i] = utils.SafeConvertAddress(c.InstantiateConfig.Addresses[i]) - } - - // save updated code info - prefixStore.Set(iter.Key(), cdc.MustMarshal(&c)) - - totalMigratedCodeId++ - } - - // contract info prefix store - ctx.Logger().Debug( - "Migration of address bech32 for wasm module code info done", - "total_migrated_code_id", totalMigratedCodeId, - ) -} - -func migrateContractInfo(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) { - ctx.Logger().Debug("Migrating of addresses bech32 for wasm module Contract info begin") - // contract info prefix store - prefixStore := prefix.NewStore(ctx.KVStore(storeKey), types.ContractKeyPrefix) - iter := prefixStore.Iterator(nil, nil) - - defer iter.Close() - - totalMigratedContractAddresses := uint64(0) - for ; iter.Valid(); iter.Next() { - // get code info value - var c types.ContractInfo - cdc.MustUnmarshal(iter.Value(), &c) - - // Update info - c.Creator = utils.SafeConvertAddress(c.Creator) - c.Admin = utils.SafeConvertAddress(c.Admin) - // save updated code info - prefixStore.Set(iter.Key(), cdc.MustMarshal(&c)) - - totalMigratedContractAddresses++ - } - - ctx.Logger().Debug( - "Migrating of addresses bech32 for wasm module Contract info done", - "total_migrated_contract_addresses", totalMigratedContractAddresses, - ) -} diff --git a/cmd/picad/cmd/genaccounts.go b/cmd/picad/cmd/genaccounts.go index df42303d7..871f4eecc 100644 --- a/cmd/picad/cmd/genaccounts.go +++ b/cmd/picad/cmd/genaccounts.go @@ -8,8 +8,6 @@ import ( "github.com/spf13/cobra" - "github.com/notional-labs/composable/v6/bech32-migration/utils" - "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/crypto/keyring" @@ -107,7 +105,10 @@ contain valid denominations. Accounts may optionally be supplied with vesting pa baseAccount := authtypes.NewBaseAccount(addr, nil, 0, 0) if !vestingAmt.IsZero() { - baseVestingAccount := authvesting.NewBaseVestingAccount(baseAccount, vestingAmt.Sort(), vestingEnd) + baseVestingAccount, err := authvesting.NewBaseVestingAccount(baseAccount, vestingAmt.Sort(), vestingEnd) + if err != nil { + return fmt.Errorf("failed to create base vesting account: %w", err) + } if (balances.Coins.IsZero() && !baseVestingAccount.OriginalVesting.IsZero()) || baseVestingAccount.OriginalVesting.IsAnyGT(balances.Coins) { @@ -197,18 +198,3 @@ contain valid denominations. Accounts may optionally be supplied with vesting pa return cmd } - -func CovertPrefixAddr() *cobra.Command { - cmd := &cobra.Command{ - Use: "convert [address]", - Short: "Convert prefix from layer to centauri", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - newAddr := utils.ConvertAccAddr(args[0]) - fmt.Println(newAddr) - - return nil - }, - } - return cmd -} diff --git a/cmd/picad/cmd/root.go b/cmd/picad/cmd/root.go index 27055bd4f..810d2e0e7 100644 --- a/cmd/picad/cmd/root.go +++ b/cmd/picad/cmd/root.go @@ -5,10 +5,11 @@ import ( "io" "os" - "github.com/CosmWasm/wasmd/x/wasm" - dbm "github.com/cometbft/cometbft-db" + "github.com/cosmos/cosmos-sdk/crypto/keyring" + + "cosmossdk.io/log" tmcli "github.com/cometbft/cometbft/libs/cli" - "github.com/cometbft/cometbft/libs/log" + dbm "github.com/cosmos/cosmos-db" "github.com/spf13/cast" "github.com/spf13/cobra" @@ -33,6 +34,7 @@ import ( genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" + "github.com/cosmos/cosmos-sdk/types/module" "github.com/notional-labs/composable/v6/app" // "github.com/notional-labs/composable/v6/app/params" // this line is used by starport scaffolding # stargate/root/import @@ -43,7 +45,24 @@ var ChainID string // NewRootCmd creates a new root command for simd. It is called once in the // main function. func NewRootCmd() (*cobra.Command, app.EncodingConfig) { - encodingConfig := app.MakeEncodingConfig() + tempApp := app.NewComposableApp( + log.NewNopLogger(), + dbm.NewMemDB(), + nil, + true, + map[int64]bool{}, + app.DefaultNodeHome, + 5, + EmptyAppOptions{}, + ) + + encodingConfig := app.EncodingConfig{ + InterfaceRegistry: tempApp.InterfaceRegistry(), + Marshaler: tempApp.AppCodec(), + TxConfig: tempApp.TxConfig(), + Amino: tempApp.LegacyAmino(), + } + initClientCtx := client.Context{}. WithCodec(encodingConfig.Marshaler). WithInterfaceRegistry(encodingConfig.InterfaceRegistry). @@ -75,7 +94,6 @@ func NewRootCmd() (*cobra.Command, app.EncodingConfig) { if err := client.SetCmdClientContextHandler(initClientCtx, cmd); err != nil { return err } - customAppTemplate, customAppConfig := initAppConfig() customTMConfig := initTendermintConfig() @@ -84,7 +102,16 @@ func NewRootCmd() (*cobra.Command, app.EncodingConfig) { }, } - initRootCmd(rootCmd, encodingConfig) + initRootCmd(rootCmd, encodingConfig.TxConfig) + + autoCliOpts := tempApp.AutoCliOpts() + initClientCtx, _ = config.ReadFromClientConfig(initClientCtx) + autoCliOpts.Keyring, _ = keyring.NewAutoCLIKeyring(initClientCtx.Keyring) + autoCliOpts.ClientCtx = initClientCtx + + if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil { + panic(err) + } return rootCmd, encodingConfig } @@ -138,7 +165,6 @@ func initAppConfig() (string, interface{}) { srvCfg.MinGasPrices = "" srvCfg.API.Enable = true srvCfg.API.EnableUnsafeCORS = true - srvCfg.GRPCWeb.EnableUnsafeCORS = true srvCfg.MinGasPrices = "0stake" // This ensures that upgraded nodes will use iavl fast node. @@ -163,7 +189,7 @@ lru_size = 0` return customAppTemplate, customAppConfig } -func initRootCmd(rootCmd *cobra.Command, encodingConfig app.EncodingConfig) { +func initRootCmd(rootCmd *cobra.Command, txConfig client.TxConfig) { cfg := sdk.GetConfig() cfg.Seal() @@ -171,28 +197,26 @@ func initRootCmd(rootCmd *cobra.Command, encodingConfig app.EncodingConfig) { rootCmd.AddCommand( genutilcli.InitCmd(app.ModuleBasics, app.DefaultNodeHome), - genutilcli.CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, app.DefaultNodeHome, gentxModule.GenTxValidator), - genutilcli.MigrateGenesisCmd(), - genutilcli.GenTxCmd(app.ModuleBasics, encodingConfig.TxConfig, banktypes.GenesisBalancesIterator{}, app.DefaultNodeHome), + genutilcli.CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, app.DefaultNodeHome, gentxModule.GenTxValidator, txConfig.SigningContext().ValidatorAddressCodec()), + genutilcli.GenTxCmd(app.ModuleBasics, txConfig, banktypes.GenesisBalancesIterator{}, app.DefaultNodeHome, txConfig.SigningContext().ValidatorAddressCodec()), genutilcli.ValidateGenesisCmd(app.ModuleBasics), AddGenesisAccountCmd(app.DefaultNodeHome), tmcli.NewCompletionCmd(rootCmd, true), addDebugCommands(debug.Cmd()), debug.Cmd(), - config.Cmd(), - CovertPrefixAddr(), + vestingcli.GetTxCmd(txConfig.SigningContext().AddressCodec()), // this line is used by starport scaffolding # stargate/root/commands ) - a := appCreator{encodingConfig} - server.AddCommands(rootCmd, app.DefaultNodeHome, a.newApp, a.appExport, addModuleInitFlags) + server.AddCommands(rootCmd, app.DefaultNodeHome, newApp, appExport, addModuleInitFlags) // add keybase, auxiliary RPC, query, and tx child commands rootCmd.AddCommand( - rpc.StatusCommand(), + server.StatusCommand(), + genesisCommand(txConfig, app.ModuleBasics), queryCommand(), txCommand(), - keys.Commands(app.DefaultNodeHome), + keys.Commands(), ) } @@ -212,11 +236,12 @@ func queryCommand() *cobra.Command { } cmd.AddCommand( - authcmd.GetAccountCmd(), - rpc.ValidatorCommand(), - rpc.BlockCommand(), + rpc.QueryEventForTxCmd(), + server.QueryBlockCmd(), authcmd.QueryTxsByEventsCmd(), + server.QueryBlocksCmd(), authcmd.QueryTxCmd(), + server.QueryBlockResultsCmd(), ) app.ModuleBasics.AddQueryCommands(cmd) @@ -238,26 +263,20 @@ func txCommand() *cobra.Command { authcmd.GetSignCommand(), authcmd.GetSignBatchCommand(), authcmd.GetMultiSignCommand(), + authcmd.GetMultiSignBatchCmd(), authcmd.GetValidateSignaturesCommand(), - flags.LineBreak, authcmd.GetBroadcastCommand(), authcmd.GetEncodeCommand(), authcmd.GetDecodeCommand(), flags.LineBreak, - vestingcli.GetTxCmd(), + authcmd.GetSimulateCmd(), ) - app.ModuleBasics.AddTxCommands(cmd) - cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") return cmd } -type appCreator struct { - encCfg app.EncodingConfig -} - -// newApp is an AppCreator -func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) servertypes.Application { +// newApp creates the application +func newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) servertypes.Application { skipUpgradeHeights := make(map[int64]bool) for _, h := range cast.ToIntSlice(appOpts.Get(server.FlagUnsafeSkipUpgrades)) { h, err := cast.ToInt64E(h) @@ -266,20 +285,15 @@ func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, a } skipUpgradeHeights[h] = true } - baseappOptions := server.DefaultBaseappOptions(appOpts) - var emptyWasmOpts []wasm.Option newApp := app.NewComposableApp( logger, db, traceStore, true, - app.GetEnabledProposals(), skipUpgradeHeights, cast.ToString(appOpts.Get(flags.FlagHome)), cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod)), - a.encCfg, // this line is used by starport scaffolding # stargate/root/appArgument appOpts, - emptyWasmOpts, baseappOptions..., ) @@ -287,7 +301,7 @@ func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, a } // appExport creates a new simapp (optionally at a given height) -func (a appCreator) appExport( +func appExport( logger log.Logger, db dbm.DB, traceStore io.Writer, height int64, forZeroHeight bool, jailAllowedAddrs []string, appOpts servertypes.AppOptions, _ []string, ) (servertypes.ExportedApp, error) { @@ -297,7 +311,6 @@ func (a appCreator) appExport( if !ok || homePath == "" { return servertypes.ExportedApp{}, errors.New("application home not set") } - var emptyWasmOpts []wasm.Option if height != -1 { anApp = app.NewComposableApp( @@ -305,13 +318,10 @@ func (a appCreator) appExport( db, traceStore, false, - app.GetEnabledProposals(), map[int64]bool{}, homePath, uint(1), - a.encCfg, appOpts, - emptyWasmOpts, ) if err := anApp.LoadHeight(height); err != nil { @@ -323,15 +333,25 @@ func (a appCreator) appExport( db, traceStore, true, - app.GetEnabledProposals(), map[int64]bool{}, homePath, uint(1), - a.encCfg, appOpts, - emptyWasmOpts, ) } return anApp.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs) } + +func genesisCommand(txConfig client.TxConfig, basicManager module.BasicManager, cmds ...*cobra.Command) *cobra.Command { + cmd := genutilcli.Commands(txConfig, basicManager, app.DefaultNodeHome) + + for _, subCmd := range cmds { + cmd.AddCommand(subCmd) + } + return cmd +} + +type EmptyAppOptions struct{} + +func (EmptyAppOptions) Get(_ string) interface{} { return nil } diff --git a/cmd/picad/config/config.go b/cmd/picad/config/config.go index f64e0b57d..c921733df 100644 --- a/cmd/picad/config/config.go +++ b/cmd/picad/config/config.go @@ -1,6 +1,7 @@ package types import ( + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/address" @@ -59,11 +60,11 @@ func SetBip44CoinType(config *sdk.Config) { // RegisterDenoms registers the base and display denominations to the SDK. func RegisterDenoms() { - if err := sdk.RegisterDenom(HumanReadableCoinUnit, sdk.OneDec()); err != nil { + if err := sdk.RegisterDenom(HumanReadableCoinUnit, sdkmath.LegacyOneDec()); err != nil { panic(err) } - if err := sdk.RegisterDenom(BaseCoinUnit, sdk.NewDecWithPrec(1, 6)); err != nil { + if err := sdk.RegisterDenom(BaseCoinUnit, sdkmath.LegacyNewDecWithPrec(1, 6)); err != nil { panic(err) } } diff --git a/custom/bank/bank_test.go b/custom/bank/bank_test.go index ffbaa63f2..fa521eb39 100644 --- a/custom/bank/bank_test.go +++ b/custom/bank/bank_test.go @@ -3,10 +3,11 @@ package bank_test import ( "testing" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" "github.com/stretchr/testify/suite" customibctesting "github.com/notional-labs/composable/v6/app/ibctesting" @@ -47,11 +48,11 @@ func TestBankTestSuite(t *testing.T) { // TODO: use testsuite here. func (suite *CustomBankTestSuite) TestTotalSupply() { var ( - transferAmount = sdk.NewInt(1000000000) + transferAmount = sdkmath.NewInt(1000000000) // when transfer via sdk transfer from A (module) -> B (contract) coinToSendToB = sdk.NewCoin(sdk.DefaultBondDenom, transferAmount) timeoutHeight = clienttypes.NewHeight(1, 110) - originAmt, err = sdk.NewIntFromString("10000000001100000000000") + originAmt, err = sdkmath.NewIntFromString("100000004100001000000") chainBOriginSuply = sdk.NewCoin("stake", originAmt) ) suite.Require().True(err) @@ -97,9 +98,9 @@ func (suite *CustomBankTestSuite) TestTotalSupply() { sdk.Coins{chainBOriginSuply.Add(sdk.NewCoin("stake", transferAmount))}, func() { // Premint for escrow - err := suite.chainB.GetBankKeeper().MintCoins(suite.chainB.GetContext(), "mint", sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1000000000)))) + err := suite.chainB.GetBankKeeper().MintCoins(suite.chainB.GetContext(), "mint", sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(1000000000)))) suite.Require().NoError(err) - err = suite.chainB.GetBankKeeper().SendCoinsFromModuleToAccount(suite.chainB.GetContext(), "mint", escrowAddr, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1000000000)))) + err = suite.chainB.GetBankKeeper().SendCoinsFromModuleToAccount(suite.chainB.GetContext(), "mint", escrowAddr, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(1000000000)))) suite.Require().NoError(err) // Add parachain token info @@ -155,15 +156,15 @@ func (suite *CustomBankTestSuite) TestTotalSupply() { totalSupply, err := suite.chainB.GetBankKeeper().TotalSupply(suite.chainB.GetContext(), &banktypes.QueryTotalSupplyRequest{}) suite.Require().NoError(err) suite.Require().Equal(totalSupply.Supply, originalChainBTotalSupply.Supply.Add(tc.expTotalSupplyDiff...)) - suite.Require().Equal(totalSupply.Supply, tc.expChainBTotalSuppy) + suite.Require().Equal(totalSupply.Supply.String(), tc.expChainBTotalSuppy.String()) }) } } func (suite *CustomBankTestSuite) TestTotalSupply2() { var ( - transferAmount = sdk.NewInt(1000000000) - transferAmount2 = sdk.NewInt(3500000000) + transferAmount = sdkmath.NewInt(1000000000) + transferAmount2 = sdkmath.NewInt(3500000000) // when transfer via sdk transfer from A (module) -> B (contract) coinChainASendToB = sdk.NewCoin(sdk.DefaultBondDenom, transferAmount) coinChainCSentToB = sdk.NewCoin(sdk.DefaultBondDenom, transferAmount2) diff --git a/custom/bank/keeper/keeper.go b/custom/bank/keeper/keeper.go index 5422ac308..b9877d46e 100644 --- a/custom/bank/keeper/keeper.go +++ b/custom/bank/keeper/keeper.go @@ -3,53 +3,47 @@ package keeper import ( "context" + "cosmossdk.io/core/store" + "cosmossdk.io/log" "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" accountkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" "github.com/cosmos/cosmos-sdk/x/bank/types" - stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + banktypes "github.com/notional-labs/composable/v6/custom/bank/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - banktypes "github.com/notional-labs/composable/v6/custom/bank/types" - transfermiddlewarekeeper "github.com/notional-labs/composable/v6/x/transfermiddleware/keeper" - - alliancekeeper "github.com/terra-money/alliance/x/alliance/keeper" ) type Keeper struct { bankkeeper.BaseKeeper - tfmk banktypes.TransferMiddlewareKeeper - ak alliancekeeper.Keeper sk banktypes.StakingKeeper - acck accountkeeper.AccountKeeper + ak accountkeeper.AccountKeeper } var _ bankkeeper.Keeper = Keeper{} func NewBaseKeeper( + logger log.Logger, cdc codec.BinaryCodec, - storeKey storetypes.StoreKey, + storeService store.KVStoreService, ak accountkeeper.AccountKeeper, blockedAddrs map[string]bool, tfmk *transfermiddlewarekeeper.Keeper, authority string, ) Keeper { keeper := Keeper{ - BaseKeeper: bankkeeper.NewBaseKeeper(cdc, storeKey, ak, blockedAddrs, authority), - ak: alliancekeeper.Keeper{}, - sk: stakingkeeper.Keeper{}, + BaseKeeper: bankkeeper.NewBaseKeeper(cdc, storeService, ak, blockedAddrs, authority, logger), tfmk: tfmk, - acck: ak, + ak: ak, } return keeper } -func (k *Keeper) RegisterKeepers(ak alliancekeeper.Keeper, sk banktypes.StakingKeeper) { +func (k *Keeper) RegisterKeepers(ak accountkeeper.AccountKeeper, sk banktypes.StakingKeeper) { k.ak = ak k.sk = sk } diff --git a/custom/bank/keeper/msg_server.go b/custom/bank/keeper/msg_server.go new file mode 100644 index 000000000..49fdeccca --- /dev/null +++ b/custom/bank/keeper/msg_server.go @@ -0,0 +1,124 @@ +package keeper + +import ( + "context" + + "cosmossdk.io/core/address" + errorsmod "cosmossdk.io/errors" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + "github.com/cosmos/cosmos-sdk/telemetry" + sdk "github.com/cosmos/cosmos-sdk/types" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/hashicorp/go-metrics" +) + +type msgServer struct { + types.MsgServer + + keeper bankkeeper.Keeper + addressCodec address.Codec +} + +var _ types.MsgServer = msgServer{} + +func NewMsgServerImpl(keeper Keeper, addressCodec address.Codec) types.MsgServer { + return &msgServer{ + MsgServer: bankkeeper.NewMsgServerImpl(keeper), + keeper: keeper, + addressCodec: addressCodec, + } +} + +func (k msgServer) Send(goCtx context.Context, msg *types.MsgSend) (*types.MsgSendResponse, error) { + from, err := k.addressCodec.StringToBytes(msg.FromAddress) + if err != nil { + return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid from address: %s", err) + } + to, err := k.addressCodec.StringToBytes(msg.ToAddress) + if err != nil { + return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid to address: %s", err) + } + + if !msg.Amount.IsValid() { + return nil, errorsmod.Wrap(sdkerrors.ErrInvalidCoins, msg.Amount.String()) + } + + if !msg.Amount.IsAllPositive() { + return nil, errorsmod.Wrap(sdkerrors.ErrInvalidCoins, msg.Amount.String()) + } + + ctx := sdk.UnwrapSDKContext(goCtx) + if err := k.keeper.IsSendEnabledCoins(ctx, msg.Amount...); err != nil { + return nil, err + } + + if k.keeper.BlockedAddr(to) { + return nil, errorsmod.Wrapf(sdkerrors.ErrUnauthorized, "%s is not allowed to receive funds", msg.ToAddress) + } + + err = k.keeper.SendCoins(ctx, from, to, msg.Amount) + if err != nil { + return nil, err + } + + defer func() { + for _, a := range msg.Amount { + if a.Amount.IsInt64() { + telemetry.SetGaugeWithLabels( + []string{"tx", "msg", "send"}, + float32(a.Amount.Int64()), + []metrics.Label{telemetry.NewLabel("denom", a.Denom)}, + ) + } + } + }() + + return &types.MsgSendResponse{}, nil +} + +func (k msgServer) MultiSend(goCtx context.Context, msg *types.MsgMultiSend) (*types.MsgMultiSendResponse, error) { + if len(msg.Inputs) == 0 { + return nil, types.ErrNoInputs + } + + if len(msg.Inputs) != 1 { + return nil, types.ErrMultipleSenders + } + + if len(msg.Outputs) == 0 { + return nil, types.ErrNoOutputs + } + + if err := types.ValidateInputOutputs(msg.Inputs[0], msg.Outputs); err != nil { + return nil, err + } + + ctx := sdk.UnwrapSDKContext(goCtx) + + // NOTE: totalIn == totalOut should already have been checked + for _, in := range msg.Inputs { + if err := k.keeper.IsSendEnabledCoins(ctx, in.Coins...); err != nil { + return nil, err + } + } + + for _, out := range msg.Outputs { + accAddr, err := k.addressCodec.StringToBytes(out.Address) + if err != nil { + return nil, err + } + + if k.keeper.BlockedAddr(accAddr) { + return nil, errorsmod.Wrapf(sdkerrors.ErrUnauthorized, "%s is not allowed to receive funds", out.Address) + } + } + + err := k.keeper.InputOutputCoins(ctx, msg.Inputs[0], msg.Outputs) + if err != nil { + return nil, err + } + + return &types.MsgMultiSendResponse{}, nil +} diff --git a/custom/bank/module.go b/custom/bank/module.go index 3d88d9612..737d3f2a2 100644 --- a/custom/bank/module.go +++ b/custom/bank/module.go @@ -3,6 +3,8 @@ package bank import ( "fmt" + "cosmossdk.io/core/address" + "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/types/module" bankmodule "github.com/cosmos/cosmos-sdk/x/bank" @@ -13,22 +15,21 @@ import ( custombankkeeper "github.com/notional-labs/composable/v6/custom/bank/keeper" ) -// AppModule wraps around the bank module and the bank keeper to return the right total supply ignoring bonded tokens -// that the alliance module minted to rebalance the voting power -// It modifies the TotalSupply and SupplyOf GRPC queries type AppModule struct { bankmodule.AppModule - keeper custombankkeeper.Keeper - subspace exported.Subspace + keeper custombankkeeper.Keeper + subspace exported.Subspace + addressCodec address.Codec } // NewAppModule creates a new AppModule object func NewAppModule(cdc codec.Codec, keeper custombankkeeper.Keeper, accountKeeper types.AccountKeeper, ss exported.Subspace) AppModule { bankModule := bankmodule.NewAppModule(cdc, keeper, accountKeeper, ss) return AppModule{ - AppModule: bankModule, - keeper: keeper, - subspace: ss, + AppModule: bankModule, + keeper: keeper, + subspace: ss, + addressCodec: accountKeeper.AddressCodec(), } } @@ -36,7 +37,7 @@ func NewAppModule(cdc codec.Codec, keeper custombankkeeper.Keeper, accountKeeper // NOTE: Overriding this method as not doing so will cause a panic // when trying to force this custom keeper into a bankkeeper.BaseKeeper func (am AppModule) RegisterServices(cfg module.Configurator) { - types.RegisterMsgServer(cfg.MsgServer(), bankkeeper.NewMsgServerImpl(am.keeper)) + types.RegisterMsgServer(cfg.MsgServer(), custombankkeeper.NewMsgServerImpl(am.keeper, am.addressCodec)) types.RegisterQueryServer(cfg.QueryServer(), am.keeper) m := bankkeeper.NewMigrator(am.keeper.BaseKeeper, am.subspace) diff --git a/custom/bank/types/keeper_interfaces.go b/custom/bank/types/keeper_interfaces.go index 3dbd094aa..7e4417d4c 100644 --- a/custom/bank/types/keeper_interfaces.go +++ b/custom/bank/types/keeper_interfaces.go @@ -1,9 +1,13 @@ package types -import sdk "github.com/cosmos/cosmos-sdk/types" +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" +) type StakingKeeper interface { - BondDenom(ctx sdk.Context) (res string) + BondDenom(ctx context.Context) (res string, err error) } type TransferMiddlewareKeeper interface { diff --git a/custom/ibc-transfer/keeper/keeper.go b/custom/ibc-transfer/keeper/keeper.go index 469c2eab1..94928e60b 100644 --- a/custom/ibc-transfer/keeper/keeper.go +++ b/custom/ibc-transfer/keeper/keeper.go @@ -6,15 +6,17 @@ import ( "fmt" "time" + sdkmath "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/codec" - ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper" + ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper" - storetypes "github.com/cosmos/cosmos-sdk/store/types" + storetypes "cosmossdk.io/store/types" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - "github.com/cosmos/ibc-go/v7/modules/core/exported" + "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" + "github.com/cosmos/ibc-go/v8/modules/core/exported" custombankkeeper "github.com/notional-labs/composable/v6/custom/bank/keeper" ibctransfermiddleware "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/keeper" ibctransfermiddlewaretypes "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types" @@ -39,9 +41,10 @@ func NewKeeper( scopedKeeper exported.ScopedKeeper, ibcTransfermiddleware *ibctransfermiddleware.Keeper, bankKeeper *custombankkeeper.Keeper, + authority string, ) Keeper { keeper := Keeper{ - Keeper: ibctransferkeeper.NewKeeper(cdc, key, paramSpace, ics4Wrapper, channelKeeper, portKeeper, authKeeper, bk, scopedKeeper), + Keeper: ibctransferkeeper.NewKeeper(cdc, key, paramSpace, ics4Wrapper, channelKeeper, portKeeper, authKeeper, bk, scopedKeeper, authority), IbcTransfermiddleware: ibcTransfermiddleware, cdc: cdc, bank: bankKeeper, @@ -59,7 +62,7 @@ func NewKeeper( func (k Keeper) Transfer(goCtx context.Context, msg *types.MsgTransfer) (*types.MsgTransferResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) params := k.IbcTransfermiddleware.GetParams(ctx) - charge_coin := sdk.NewCoin(msg.Token.Denom, sdk.ZeroInt()) + charge_coin := sdk.NewCoin(msg.Token.Denom, sdkmath.ZeroInt()) if params.ChannelFees != nil && len(params.ChannelFees) > 0 { channelFee := findChannelParams(params.ChannelFees, msg.SourceChannel) if channelFee != nil { @@ -121,7 +124,7 @@ func (k Keeper) Transfer(goCtx context.Context, msg *types.MsgTransfer) (*types. return nil, send_err } - if newAmount.LTE(sdk.ZeroInt()) { + if newAmount.LTE(sdkmath.ZeroInt()) { return &types.MsgTransferResponse{}, nil } msg.Token.Amount = newAmount diff --git a/custom/ibc-transfer/keeper/msg_server.go b/custom/ibc-transfer/keeper/msg_server.go index 7adb3a0a6..4669c9af8 100644 --- a/custom/ibc-transfer/keeper/msg_server.go +++ b/custom/ibc-transfer/keeper/msg_server.go @@ -5,8 +5,9 @@ import ( "fmt" "time" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" custombankkeeper "github.com/notional-labs/composable/v6/custom/bank/keeper" ibctransfermiddlewaretypes "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types" ) @@ -33,7 +34,7 @@ func NewMsgServerImpl(ibcKeeper Keeper, bankKeeper custombankkeeper.Keeper) type func (k msgServer) Transfer(goCtx context.Context, msg *types.MsgTransfer) (*types.MsgTransferResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) params := k.Keeper.IbcTransfermiddleware.GetParams(ctx) - charge_coin := sdk.NewCoin(msg.Token.Denom, sdk.ZeroInt()) + charge_coin := sdk.NewCoin(msg.Token.Denom, sdkmath.ZeroInt()) if params.ChannelFees != nil && len(params.ChannelFees) > 0 { channelFee := findChannelParams(params.ChannelFees, msg.SourceChannel) if channelFee != nil { @@ -95,7 +96,7 @@ func (k msgServer) Transfer(goCtx context.Context, msg *types.MsgTransfer) (*typ return nil, send_err } - if newAmount.LTE(sdk.ZeroInt()) { + if newAmount.LTE(sdkmath.ZeroInt()) { return &types.MsgTransferResponse{}, nil } msg.Token.Amount = newAmount diff --git a/custom/ibc-transfer/module.go b/custom/ibc-transfer/module.go index dd34f0716..88de731ea 100644 --- a/custom/ibc-transfer/module.go +++ b/custom/ibc-transfer/module.go @@ -6,9 +6,9 @@ import ( "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/types/module" - ibctransfermodule "github.com/cosmos/ibc-go/v7/modules/apps/transfer" - ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper" - "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + ibctransfermodule "github.com/cosmos/ibc-go/v8/modules/apps/transfer" + ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper" + "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" custombankkeeper "github.com/notional-labs/composable/v6/custom/bank/keeper" customibctransferkeeper "github.com/notional-labs/composable/v6/custom/ibc-transfer/keeper" ) @@ -48,4 +48,12 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { if err := cfg.RegisterMigration(types.ModuleName, 2, m.MigrateTotalEscrowForDenom); err != nil { panic(fmt.Sprintf("failed to migrate transfer app from version 2 to 3: %v", err)) } + + if err := cfg.RegisterMigration(types.ModuleName, 3, m.MigrateParams); err != nil { + panic(fmt.Errorf("failed to migrate transfer app version 3 to 4 (self-managed params migration): %v", err)) + } + + if err := cfg.RegisterMigration(types.ModuleName, 4, m.MigrateDenomMetadata); err != nil { + panic(fmt.Errorf("failed to migrate transfer app from version 4 to 5 (set denom metadata migration): %v", err)) + } } diff --git a/custom/staking/abci.go b/custom/staking/abci.go index 915dafca0..1fce8202c 100644 --- a/custom/staking/abci.go +++ b/custom/staking/abci.go @@ -1,22 +1,21 @@ package bank import ( + "context" "time" abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/telemetry" - sdk "github.com/cosmos/cosmos-sdk/types" - // "github.com/cosmos/cosmos-sdk/x/staking/keeper" "github.com/cosmos/cosmos-sdk/x/staking/types" customstakingkeeper "github.com/notional-labs/composable/v6/custom/staking/keeper" ) -// Called every block, update validator set -func EndBlocker(ctx sdk.Context, k *customstakingkeeper.Keeper) []abci.ValidatorUpdate { +// EndBlocker returns the end blocker for the staking module. +func EndBlocker(ctx context.Context, k *customstakingkeeper.Keeper) ([]abci.ValidatorUpdate, error) { defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyEndBlocker) - return k.BlockValidatorUpdates(ctx, ctx.BlockHeight()) + return k.BlockValidatorUpdates(ctx) } diff --git a/custom/staking/keeper/keeper.go b/custom/staking/keeper/keeper.go index 4f9fde1fd..0ddcaeeda 100644 --- a/custom/staking/keeper/keeper.go +++ b/custom/staking/keeper/keeper.go @@ -1,13 +1,15 @@ package keeper import ( + "context" "fmt" "cosmossdk.io/math" abcicometbft "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" + "cosmossdk.io/core/address" + storetypes "cosmossdk.io/core/store" sdk "github.com/cosmos/cosmos-sdk/types" distkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" @@ -27,7 +29,7 @@ type Keeper struct { authKeeper minttypes.AccountKeeper } -func (k Keeper) BlockValidatorUpdates(ctx sdk.Context, height int64) []abcicometbft.ValidatorUpdate { +func (k Keeper) BlockValidatorUpdates(ctx context.Context) ([]abcicometbft.ValidatorUpdate, error) { // Calculate validator set changes. // // NOTE: ApplyAndReturnValidatorSetUpdates has to come before @@ -37,7 +39,9 @@ func (k Keeper) BlockValidatorUpdates(ctx sdk.Context, height int64) []abcicomet // unbonded after the Endblocker (go from Bonded -> Unbonding during // ApplyAndReturnValidatorSetUpdates and then Unbonding -> Unbonded during // UnbondAllMatureValidatorQueue). - params := k.Stakingmiddleware.GetParams(ctx) + sdkCtx := sdk.UnwrapSDKContext(ctx) + params := k.Stakingmiddleware.GetParams(sdkCtx) + height := sdkCtx.BlockHeight() shouldExecuteBatch := (height % int64(params.BlocksPerEpoch)) == 0 var validatorUpdates []abcicometbft.ValidatorUpdate if shouldExecuteBatch { @@ -50,14 +54,20 @@ func (k Keeper) BlockValidatorUpdates(ctx sdk.Context, height int64) []abcicomet } // unbond all mature validators from the unbonding queue - k.UnbondAllMatureValidators(ctx) + err := k.UnbondAllMatureValidators(ctx) + if err != nil { + return nil, err + } // Remove all mature unbonding delegations from the ubd queue. - matureUnbonds := k.DequeueAllMatureUBDQueue(ctx, ctx.BlockHeader().Time) + matureUnbonds, err := k.DequeueAllMatureUBDQueue(ctx, sdkCtx.BlockHeader().Time) + if err != nil { + return nil, err + } for _, dvPair := range matureUnbonds { addr, err := sdk.ValAddressFromBech32(dvPair.ValidatorAddress) if err != nil { - panic(err) + return nil, err } delegatorAddress := sdk.MustAccAddressFromBech32(dvPair.DelegatorAddress) @@ -66,7 +76,7 @@ func (k Keeper) BlockValidatorUpdates(ctx sdk.Context, height int64) []abcicomet continue } - ctx.EventManager().EmitEvent( + sdkCtx.EventManager().EmitEvent( sdk.NewEvent( types.EventTypeCompleteUnbonding, sdk.NewAttribute(sdk.AttributeKeyAmount, balances.String()), @@ -77,15 +87,18 @@ func (k Keeper) BlockValidatorUpdates(ctx sdk.Context, height int64) []abcicomet } // Remove all mature redelegations from the red queue. - matureRedelegations := k.DequeueAllMatureRedelegationQueue(ctx, ctx.BlockHeader().Time) + matureRedelegations, err := k.DequeueAllMatureRedelegationQueue(ctx, sdkCtx.BlockHeader().Time) + if err != nil { + return nil, err + } for _, dvvTriplet := range matureRedelegations { valSrcAddr, err := sdk.ValAddressFromBech32(dvvTriplet.ValidatorSrcAddress) if err != nil { - panic(err) + return nil, err } valDstAddr, err := sdk.ValAddressFromBech32(dvvTriplet.ValidatorDstAddress) if err != nil { - panic(err) + return nil, err } delegatorAddress := sdk.MustAccAddressFromBech32(dvvTriplet.DelegatorAddress) @@ -99,7 +112,7 @@ func (k Keeper) BlockValidatorUpdates(ctx sdk.Context, height int64) []abcicomet continue } - ctx.EventManager().EmitEvent( + sdkCtx.EventManager().EmitEvent( sdk.NewEvent( types.EventTypeCompleteRedelegation, sdk.NewAttribute(sdk.AttributeKeyAmount, balances.String()), @@ -110,25 +123,25 @@ func (k Keeper) BlockValidatorUpdates(ctx sdk.Context, height int64) []abcicomet ) } - return validatorUpdates + return validatorUpdates, nil } func NewKeeper( cdc codec.BinaryCodec, - key storetypes.StoreKey, + storeService storetypes.KVStoreService, ak types.AccountKeeper, bk types.BankKeeper, authority string, stakingmiddleware *stakingmiddleware.Keeper, + validatorAddressCodec, consensusAddressCodec address.Codec, ) *Keeper { keeper := Keeper{ - Keeper: *stakingkeeper.NewKeeper(cdc, key, ak, bk, authority), + Keeper: *stakingkeeper.NewKeeper(cdc, storeService, ak, bk, authority, validatorAddressCodec, consensusAddressCodec), authority: authority, Stakingmiddleware: stakingmiddleware, cdc: cdc, mintKeeper: mintkeeper.Keeper{}, distrKeeper: distkeeper.Keeper{}, - authKeeper: ak, } return &keeper } @@ -139,12 +152,23 @@ func (k *Keeper) RegisterKeepers(dk distkeeper.Keeper, mk mintkeeper.Keeper) { } // SlashWithInfractionReason send coins to community pool -func (k Keeper) SlashWithInfractionReason(ctx sdk.Context, consAddr sdk.ConsAddress, infractionHeight, power int64, slashFactor sdk.Dec, _ types.Infraction) math.Int { +func (k Keeper) SlashWithInfractionReason(ctx context.Context, consAddr sdk.ConsAddress, infractionHeight, power int64, slashFactor math.LegacyDec, _ types.Infraction) (math.Int, error) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + // keep slashing logic the same - amountBurned := k.Slash(ctx, consAddr, infractionHeight, power, slashFactor) + amountBurned, err := k.Slash(ctx, consAddr, infractionHeight, power, slashFactor) + if err != nil { + return math.ZeroInt(), err + } + // after usual slashing and burning is done, mint burned coinds into community pool - coins := sdk.NewCoins(sdk.NewCoin(k.BondDenom(ctx), amountBurned)) - err := k.mintKeeper.MintCoins(ctx, coins) + denom, err := k.BondDenom(ctx) + if err != nil { + return math.ZeroInt(), err + } + + coins := sdk.NewCoins(sdk.NewCoin(denom, amountBurned)) + err = k.mintKeeper.MintCoins(sdkCtx, coins) if err != nil { k.Logger(ctx).Error("Failed to mint slashed coins: ", amountBurned) } else { @@ -152,7 +176,7 @@ func (k Keeper) SlashWithInfractionReason(ctx sdk.Context, consAddr sdk.ConsAddr if err != nil { k.Logger(ctx).Error(fmt.Sprintf("Failed to fund community pool. Tokens minted to the staking module account: %d. ", amountBurned)) } else { - ctx.EventManager().EmitEvent( + sdkCtx.EventManager().EmitEvent( sdk.NewEvent( minttypes.EventTypeMintSlashed, sdk.NewAttribute(sdk.AttributeKeyAmount, amountBurned.String()), @@ -160,5 +184,5 @@ func (k Keeper) SlashWithInfractionReason(ctx sdk.Context, consAddr sdk.ConsAddr ) } } - return amountBurned + return amountBurned, nil } diff --git a/custom/staking/module.go b/custom/staking/module.go index 44a306f73..3d42fcdaf 100644 --- a/custom/staking/module.go +++ b/custom/staking/module.go @@ -1,9 +1,11 @@ package bank import ( + "context" "fmt" - abcitype "github.com/cometbft/cometbft/abci/types" + abci "github.com/cometbft/cometbft/abci/types" + "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/types/module" stakingmodule "github.com/cosmos/cosmos-sdk/x/staking" @@ -12,7 +14,7 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" // custombankkeeper "github.com/notional-labs/composable/v6/custom/bank/keeper" - sdk "github.com/cosmos/cosmos-sdk/types" + customstakingkeeper "github.com/notional-labs/composable/v6/custom/staking/keeper" ) @@ -56,8 +58,12 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { if err := cfg.RegisterMigration(stakingtypes.ModuleName, 3, m.Migrate3to4); err != nil { panic(fmt.Sprintf("failed to migrate x/staking from version 3 to 4: %v", err)) } + + if err := cfg.RegisterMigration(stakingtypes.ModuleName, 4, m.Migrate4to5); err != nil { + panic(fmt.Sprintf("failed to migrate x/staking from version 4 to 5: %v", err)) + } } -func (am AppModule) EndBlock(ctx sdk.Context, _abc abcitype.RequestEndBlock) []abcitype.ValidatorUpdate { +func (am AppModule) EndBlock(ctx context.Context) ([]abci.ValidatorUpdate, error) { return EndBlocker(ctx, &am.keeper) } diff --git a/flake.lock b/flake.lock new file mode 100644 index 000000000..7052e3fc2 --- /dev/null +++ b/flake.lock @@ -0,0 +1,1548 @@ +{ + "nodes": { + "akash-src": { + "flake": false, + "locked": { + "lastModified": 1648485085, + "narHash": "sha256-33FPy0dn6QuqneEqZYkFoCRm9agG7PE+9C/pYH9Gwx4=", + "owner": "ovrclk", + "repo": "akash", + "rev": "5b8b6bbede6c9fbb2df1ca536b8edfcf5652adf8", + "type": "github" + }, + "original": { + "owner": "ovrclk", + "ref": "v0.15.0-rc17", + "repo": "akash", + "type": "github" + } + }, + "apalache-src": { + "flake": false, + "locked": { + "lastModified": 1692625213, + "narHash": "sha256-Z/tmBMv+QshFJLo2kBgBdkqfKwF93CgURVIbYF3dwJE=", + "owner": "informalsystems", + "repo": "apalache", + "rev": "ec979d4554360faf9d73ddf72dccf350614076d5", + "type": "github" + }, + "original": { + "owner": "informalsystems", + "ref": "v0.42.0", + "repo": "apalache", + "type": "github" + } + }, + "beaker-src": { + "flake": false, + "locked": { + "lastModified": 1686823358, + "narHash": "sha256-bQiN5Q7RV4Uupc7rk1rGurRvCTy+5EiiB4p3bHct7M0=", + "owner": "osmosis-labs", + "repo": "beaker", + "rev": "f3c7a9fc6886aa2b4e0d259f70058d6c23c225e5", + "type": "github" + }, + "original": { + "owner": "osmosis-labs", + "ref": "v0.1.6", + "repo": "beaker", + "type": "github" + } + }, + "celestia-src": { + "flake": false, + "locked": { + "lastModified": 1700494564, + "narHash": "sha256-O6KrCStrZLmWy3xybQUNsWEb3O7vIRCFDE9MsEtsFro=", + "owner": "celestiaorg", + "repo": "celestia-app", + "rev": "2dbfabf1849e166974c1287c35b43e5e07727643", + "type": "github" + }, + "original": { + "owner": "celestiaorg", + "ref": "v1.4.0", + "repo": "celestia-app", + "type": "github" + } + }, + "centauri-src": { + "flake": false, + "locked": { + "lastModified": 1701431373, + "narHash": "sha256-EpZ1CQN0gMU8W1u3CMbqlaHeeVpQO2i1GPg6pOyOQTc=", + "owner": "ComposableFi", + "repo": "composable-cosmos", + "rev": "387c96b434db9d96b0506aa7f14536d9bdec968c", + "type": "github" + }, + "original": { + "owner": "ComposableFi", + "repo": "composable-cosmos", + "rev": "387c96b434db9d96b0506aa7f14536d9bdec968c", + "type": "github" + } + }, + "cometbft-src": { + "flake": false, + "locked": { + "lastModified": 1694550324, + "narHash": "sha256-G5gchJMn/BFzwYx8/ikPDL5fS/TuFIBF4DKJbkalp/M=", + "owner": "cometbft", + "repo": "cometbft", + "rev": "66a5a9da9f7a3306f382eb9142ccb9c9f7997d3f", + "type": "github" + }, + "original": { + "owner": "cometbft", + "ref": "v0.38.0", + "repo": "cometbft", + "type": "github" + } + }, + "cosmos": { + "inputs": { + "akash-src": "akash-src", + "apalache-src": "apalache-src", + "beaker-src": "beaker-src", + "celestia-src": "celestia-src", + "centauri-src": "centauri-src", + "cometbft-src": "cometbft-src", + "cosmos-sdk-src": "cosmos-sdk-src", + "cosmwasm-src": "cosmwasm-src", + "crescent-src": "crescent-src", + "cw-plus-src": "cw-plus-src", + "evmos-src": "evmos-src", + "flake-parts": "flake-parts", + "gaia-main-src": "gaia-main-src", + "gaia10-src": "gaia10-src", + "gaia11-src": "gaia11-src", + "gaia12-src": "gaia12-src", + "gaia13-src": "gaia13-src", + "gaia14-src": "gaia14-src", + "gaia5-src": "gaia5-src", + "gaia6-ordered-src": "gaia6-ordered-src", + "gaia6-src": "gaia6-src", + "gaia7-src": "gaia7-src", + "gaia8-src": "gaia8-src", + "gaia9-src": "gaia9-src", + "gex-src": "gex-src", + "gomod2nix": "gomod2nix", + "hermes-src": "hermes-src", + "ibc-go-v2-src": "ibc-go-v2-src", + "ibc-go-v3-src": "ibc-go-v3-src", + "ibc-go-v4-src": "ibc-go-v4-src", + "ibc-go-v5-src": "ibc-go-v5-src", + "ibc-go-v6-src": "ibc-go-v6-src", + "ibc-go-v7-src": "ibc-go-v7-src", + "ibc-go-v8-channel-upgrade-src": "ibc-go-v8-channel-upgrade-src", + "ibc-go-v8-src": "ibc-go-v8-src", + "ibc-rs-src": "ibc-rs-src", + "ica-src": "ica-src", + "ignite-cli-src": "ignite-cli-src", + "interchain-security-src": "interchain-security-src", + "iris-src": "iris-src", + "ixo-src": "ixo-src", + "juno-src": "juno-src", + "migaloo-src": "migaloo-src", + "namada-src": "namada-src", + "neutron-src": "neutron-src", + "nix-std": "nix-std", + "nixpkgs": [ + "nixpkgs" + ], + "osmosis-src": "osmosis-src", + "provenance-src": "provenance-src", + "regen-src": "regen-src", + "relayer-src": "relayer-src", + "rust-overlay": "rust-overlay", + "sbt-derivation": "sbt-derivation", + "sconfig-src": "sconfig-src", + "sentinel-src": "sentinel-src", + "sifchain-src": "sifchain-src", + "stargaze-src": "stargaze-src", + "stoml-src": "stoml-src", + "stride-consumer-src": "stride-consumer-src", + "stride-src": "stride-src", + "umee-src": "umee-src", + "wasmd-src": "wasmd-src", + "wasmd_next-src": "wasmd_next-src", + "wasmvm_1-src": "wasmvm_1-src", + "wasmvm_1_1_1-src": "wasmvm_1_1_1-src", + "wasmvm_1_1_2-src": "wasmvm_1_1_2-src", + "wasmvm_1_2_3-src": "wasmvm_1_2_3-src", + "wasmvm_1_2_4-src": "wasmvm_1_2_4-src", + "wasmvm_1_3_0-src": "wasmvm_1_3_0-src", + "wasmvm_1_5_0-src": "wasmvm_1_5_0-src", + "wasmvm_1_beta7-src": "wasmvm_1_beta7-src" + }, + "locked": { + "lastModified": 1703683453, + "narHash": "sha256-uMgdhucQZTNFPa+5v3GXnhFEgXsIIytx16Lp+qI4/tI=", + "owner": "informalsystems", + "repo": "cosmos.nix", + "rev": "8429e606fa6b968f6f01752f702b7ba7ce9a9992", + "type": "github" + }, + "original": { + "owner": "informalsystems", + "repo": "cosmos.nix", + "type": "github" + } + }, + "cosmos-sdk-src": { + "flake": false, + "locked": { + "lastModified": 1658846655, + "narHash": "sha256-Xs83vbgt4+YH2LRJx7692nIjRBr5QCYoUHI17njsjlw=", + "owner": "cosmos", + "repo": "cosmos-sdk", + "rev": "a1143138716b64bc4fa0aa53c0f0fa59eb675bb7", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v0.46.0", + "repo": "cosmos-sdk", + "type": "github" + } + }, + "cosmwasm-src": { + "flake": false, + "locked": { + "lastModified": 1698745412, + "narHash": "sha256-41s5jLFzw9Jo+dirAVOad1dtUqCBY6rIz/6TRc0frMw=", + "owner": "CosmWasm", + "repo": "cosmwasm", + "rev": "89891f0bb2de2c83d00600208695d0d5e1b617ac", + "type": "github" + }, + "original": { + "owner": "CosmWasm", + "ref": "v1.5.0", + "repo": "cosmwasm", + "type": "github" + } + }, + "crescent-src": { + "flake": false, + "locked": { + "lastModified": 1647869429, + "narHash": "sha256-c1xiTB/HgtQJSwD3ccFQIoSHPbJK6rf1nSjnM3r0oCE=", + "owner": "crescent-network", + "repo": "crescent", + "rev": "01980cfd06b06786109eaba78c154e6db1adc3d6", + "type": "github" + }, + "original": { + "owner": "crescent-network", + "ref": "v1.0.0-rc3", + "repo": "crescent", + "type": "github" + } + }, + "cw-plus-src": { + "flake": false, + "locked": { + "lastModified": 1700757493, + "narHash": "sha256-E5vkY+B4BDoTDtvuB+7Tm3k/5dCYPSjUujMWcgYsWf0=", + "owner": "CosmWasm", + "repo": "cw-plus", + "rev": "d33824679d5b91ca0b4615a8dede7e0028947486", + "type": "github" + }, + "original": { + "owner": "CosmWasm", + "ref": "v1.1.2", + "repo": "cw-plus", + "type": "github" + } + }, + "evmos-src": { + "flake": false, + "locked": { + "lastModified": 1702504794, + "narHash": "sha256-ECXXQ0hx/MXascMP6aXf880zts/dNPpQM9jOCIHTLZQ=", + "owner": "evmos", + "repo": "evmos", + "rev": "6f94d2002c01b7f7908a69089ed6996ac2bb450c", + "type": "github" + }, + "original": { + "owner": "evmos", + "ref": "v16.0.0-rc4", + "repo": "evmos", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1701473968, + "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1701473968, + "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1681202837, + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gaia-main-src": { + "flake": false, + "locked": { + "lastModified": 1702388853, + "narHash": "sha256-1O8ncSd0mUNEUHSTi2U9d21Dv1yszQKohjp/AS6IxcU=", + "owner": "cosmos", + "repo": "gaia", + "rev": "2dc2b82ea9da34b3c4823458919004f1a583a597", + "type": "github" + }, + "original": { + "owner": "cosmos", + "repo": "gaia", + "type": "github" + } + }, + "gaia10-src": { + "flake": false, + "locked": { + "lastModified": 1688401730, + "narHash": "sha256-F72AxDI1OdleE8If5s4HJbORqMsDVsdEO5q7nrK07E8=", + "owner": "cosmos", + "repo": "gaia", + "rev": "a2b14cdd568273e12b80579b4e22681df95b4cb9", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v10.0.2", + "repo": "gaia", + "type": "github" + } + }, + "gaia11-src": { + "flake": false, + "locked": { + "lastModified": 1690464504, + "narHash": "sha256-bIegGSPDdDRbznfgsrojsGCwCPSesNknpffTFskc7fE=", + "owner": "cosmos", + "repo": "gaia", + "rev": "541a8d86af28231c767d6db52eb88ba9496ad0c4", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v11.0.0", + "repo": "gaia", + "type": "github" + } + }, + "gaia12-src": { + "flake": false, + "locked": { + "lastModified": 1692870038, + "narHash": "sha256-KqpkazhGGQWzvHiiwCiE7ciA8+L2t2HgxN8270zuGd0=", + "owner": "cosmos", + "repo": "gaia", + "rev": "6f8067d76ce30996f83645862153ccfaf5f13dd1", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v12.0.0", + "repo": "gaia", + "type": "github" + } + }, + "gaia13-src": { + "flake": false, + "locked": { + "lastModified": 1699370179, + "narHash": "sha256-bvJ33JL1Fr7ilnnYEjrjnbS/dbFkyhZ2uq6u39CeTa0=", + "owner": "cosmos", + "repo": "gaia", + "rev": "2406abb61856b61904ff06c7be2a355babcc3dfc", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v13.0.2", + "repo": "gaia", + "type": "github" + } + }, + "gaia14-src": { + "flake": false, + "locked": { + "lastModified": 1700067649, + "narHash": "sha256-7AnaIy/SElf/Uj2xTbHzLSgPY68SgQqqJZ2BPmt6czo=", + "owner": "cosmos", + "repo": "gaia", + "rev": "189b57be735d64d0dbf0945717b49017a1beb11e", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v14.0.0", + "repo": "gaia", + "type": "github" + } + }, + "gaia5-src": { + "flake": false, + "locked": { + "lastModified": 1634231239, + "narHash": "sha256-NfR9GRBNBlm5hB3lFea+Vlf4dkapZIZg0sZuyOX2cn8=", + "owner": "cosmos", + "repo": "gaia", + "rev": "b72cc994f7156c8a8991e6beed2dde84ad274588", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v5.0.8", + "repo": "gaia", + "type": "github" + } + }, + "gaia6-ordered-src": { + "flake": false, + "locked": { + "lastModified": 1648034337, + "narHash": "sha256-yw3WUCLRvn46xlWAnk6nBmvc3T91aryvBcOOfJ2ocPA=", + "owner": "informalsystems", + "repo": "gaia", + "rev": "d9e61fb98308dea2e02e8c6c6a9ab969dc240cc7", + "type": "github" + }, + "original": { + "owner": "informalsystems", + "ref": "v6.0.4-ordered", + "repo": "gaia", + "type": "github" + } + }, + "gaia6-src": { + "flake": false, + "locked": { + "lastModified": 1646904235, + "narHash": "sha256-JdD0DTdMo05ggGvpHN5hugEEtGA0/WQ4bhbryDlfGXo=", + "owner": "cosmos", + "repo": "gaia", + "rev": "305668ab9d962431c79d718bb0ffdeec77a46439", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v6.0.4", + "repo": "gaia", + "type": "github" + } + }, + "gaia7-src": { + "flake": false, + "locked": { + "lastModified": 1665762684, + "narHash": "sha256-hsDqDASwTPIb1BGOqa9nu4C5Y5q3hBoXYhkAFY7B9Cs=", + "owner": "cosmos", + "repo": "gaia", + "rev": "5db8fcc9a229730f5115bed82d0f85b6db7184b4", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v7.1.0", + "repo": "gaia", + "type": "github" + } + }, + "gaia8-src": { + "flake": false, + "locked": { + "lastModified": 1676667875, + "narHash": "sha256-8XPcJRQEQDtTbGFg0pWexkNdWESn1FoKvz4T2Z8UPDw=", + "owner": "cosmos", + "repo": "gaia", + "rev": "890ab3aa2e5788537b0d2ebc9bafdc968340e0e5", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v8.0.1", + "repo": "gaia", + "type": "github" + } + }, + "gaia9-src": { + "flake": false, + "locked": { + "lastModified": 1681924944, + "narHash": "sha256-UIM6yfqs1yZZ2BO/bBB43pPYSW1IzaYsk2f500tDYzA=", + "owner": "cosmos", + "repo": "gaia", + "rev": "05b6b87d3c9121e933eab437772ea56f33ae268f", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v9.0.3", + "repo": "gaia", + "type": "github" + } + }, + "gex-src": { + "flake": false, + "locked": { + "lastModified": 1697704475, + "narHash": "sha256-lgJVxn7Q2I8TBdvbzyn7bl1MN5StEw3NvRzCvBFFuB8=", + "owner": "cosmos", + "repo": "gex", + "rev": "233d335dc9e8c89fb318d1081fae74435f6cac11", + "type": "github" + }, + "original": { + "owner": "cosmos", + "repo": "gex", + "rev": "233d335dc9e8c89fb318d1081fae74435f6cac11", + "type": "github" + } + }, + "gomod2nix": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1702956934, + "narHash": "sha256-f1NuMA2mZ3Chw2CjlUkRAzNgDw0TYyj1i5YZJRByDdo=", + "owner": "JonathanLorimer", + "repo": "gomod2nix", + "rev": "6d2fce6003d08eee42648f2931de8449d3de1f5f", + "type": "github" + }, + "original": { + "owner": "JonathanLorimer", + "ref": "jonathan/update-go", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_2": { + "inputs": { + "flake-utils": "flake-utils_4", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1701687253, + "narHash": "sha256-qJCMxIKWXonJODPF2oV7mCd0xu7VYVenTucrY0bizto=", + "owner": "nix-community", + "repo": "gomod2nix", + "rev": "001bbfa22e2adeb87c34c6015e5694e88721cabe", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "gomod2nix", + "type": "github" + } + }, + "hermes-src": { + "flake": false, + "locked": { + "lastModified": 1702629809, + "narHash": "sha256-JTZMp4By/pGsMdKzfi4H1LQS1RKYQHBq5NEju5ADX/s=", + "owner": "informalsystems", + "repo": "hermes", + "rev": "ab732666fe35de129ada98731280d03411f6375f", + "type": "github" + }, + "original": { + "owner": "informalsystems", + "ref": "v1.7.4", + "repo": "hermes", + "type": "github" + } + }, + "ibc-go-v2-src": { + "flake": false, + "locked": { + "lastModified": 1663274791, + "narHash": "sha256-LuJvlXmGRyJAiM6+uk+NuamjIsEqMqF20twBmB0p8+k=", + "owner": "cosmos", + "repo": "ibc-go", + "rev": "e45fa32d1cf91c36807428f688d8e2ec88947940", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v2.4.1", + "repo": "ibc-go", + "type": "github" + } + }, + "ibc-go-v3-src": { + "flake": false, + "locked": { + "lastModified": 1663683283, + "narHash": "sha256-Er24B1unLYR/gG4JSrV+vZ/cPD6t7OFvtqp7AJCtDSE=", + "owner": "cosmos", + "repo": "ibc-go", + "rev": "250157f3fd40abaf9f8f1452cd78bf3304c38c72", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v3.3.0", + "repo": "ibc-go", + "type": "github" + } + }, + "ibc-go-v4-src": { + "flake": false, + "locked": { + "lastModified": 1667809128, + "narHash": "sha256-R1/AH6laXdaMftgwnV4t/pL3QoKnZ1UaBGoqOipOvQI=", + "owner": "cosmos", + "repo": "ibc-go", + "rev": "ecb845d5e43f53decf48f8ed88c7847a9a4375cb", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v4.2.0", + "repo": "ibc-go", + "type": "github" + } + }, + "ibc-go-v5-src": { + "flake": false, + "locked": { + "lastModified": 1668024626, + "narHash": "sha256-+Z78PyGODLr2Y5G8evubsoQE3tyUcxCHJDsLXKTmdlI=", + "owner": "cosmos", + "repo": "ibc-go", + "rev": "c0acd5bd1778f2b7ecdf593006f56bd3e273bd49", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v5.1.0", + "repo": "ibc-go", + "type": "github" + } + }, + "ibc-go-v6-src": { + "flake": false, + "locked": { + "lastModified": 1671525236, + "narHash": "sha256-V8kUNwgNfx1tZJazlnaTF6wBb7ztueh1KrAGgiP8hCM=", + "owner": "cosmos", + "repo": "ibc-go", + "rev": "d34cef7e075dda1a24a0a3e9b6d3eff406cc606c", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v6.1.0", + "repo": "ibc-go", + "type": "github" + } + }, + "ibc-go-v7-src": { + "flake": false, + "locked": { + "lastModified": 1693509694, + "narHash": "sha256-umh/ckDALt0ugXwN8glcaCkGfAQvXY7S3Jd95Do2XeA=", + "owner": "cosmos", + "repo": "ibc-go", + "rev": "c75650a1a037a9fecba5a9005df380f707520ff7", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v7.3.0", + "repo": "ibc-go", + "type": "github" + } + }, + "ibc-go-v8-channel-upgrade-src": { + "flake": false, + "locked": { + "lastModified": 1695726576, + "narHash": "sha256-mM6h1KAi8lQUrJakxI6f8WI+vpmBhCnAysk3hTZBI7M=", + "owner": "cosmos", + "repo": "ibc-go", + "rev": "63c30108f0ecf954108cf51f50f3d36ec58c7e51", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "04-channel-upgrades-alpha.0", + "repo": "ibc-go", + "type": "github" + } + }, + "ibc-go-v8-src": { + "flake": false, + "locked": { + "lastModified": 1699602904, + "narHash": "sha256-BcP3y874QviVsV+04p9CioolyvmWH82ORbb5EB2GyRI=", + "owner": "cosmos", + "repo": "ibc-go", + "rev": "2551dea41cd3c512845007ca895c8402afa9b79f", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v8.0.0", + "repo": "ibc-go", + "type": "github" + } + }, + "ibc-rs-src": { + "flake": false, + "locked": { + "lastModified": 1661171856, + "narHash": "sha256-M9KsPQdvyTArDe3sTi29+gfs69KHtpoNYLgI7IHYo9U=", + "owner": "informalsystems", + "repo": "ibc-rs", + "rev": "ed4dd8c8b4ebd695730de2a1c69f3011cb179352", + "type": "github" + }, + "original": { + "owner": "informalsystems", + "ref": "v1.0.0", + "repo": "ibc-rs", + "type": "github" + } + }, + "ica-src": { + "flake": false, + "locked": { + "lastModified": 1695202199, + "narHash": "sha256-8RwZSnqqZzVjQsSMTckNhmTy3VYyubVmgE/hU6ntq9M=", + "owner": "cosmos", + "repo": "interchain-accounts-demo", + "rev": "9d9ec3f4f7e37e9d2a1c7f4a199e7d18c17e14db", + "type": "github" + }, + "original": { + "owner": "cosmos", + "repo": "interchain-accounts-demo", + "type": "github" + } + }, + "ignite-cli-src": { + "flake": false, + "locked": { + "lastModified": 1662991379, + "narHash": "sha256-sVgIjecswxD8OBXRXoVk2BNsTXzUcYAb6QZk0rVrQqo=", + "owner": "ignite", + "repo": "cli", + "rev": "21c6430cfcc17c69885524990c448d4a3f56461c", + "type": "github" + }, + "original": { + "owner": "ignite", + "ref": "v0.24.0", + "repo": "cli", + "type": "github" + } + }, + "interchain-security-src": { + "flake": false, + "locked": { + "lastModified": 1700577019, + "narHash": "sha256-adBzn51PKoRsCL9gIzC5Tcqmu7u3GjxTcDj2jpZ/da8=", + "owner": "cosmos", + "repo": "interchain-security", + "rev": "03aada4af3243dbf739a12adfacc7b37232df694", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "feat/ics-misbehaviour-handling", + "repo": "interchain-security", + "type": "github" + } + }, + "iris-src": { + "flake": false, + "locked": { + "lastModified": 1618986686, + "narHash": "sha256-1nPJOuYeGjzBYFCS0IiC5j9TJd5KVa9IL0kROks328E=", + "owner": "irisnet", + "repo": "irishub", + "rev": "53e156b2ee7eeb0b9d5b263066d0d3c88a1af736", + "type": "github" + }, + "original": { + "owner": "irisnet", + "ref": "v1.1.1", + "repo": "irishub", + "type": "github" + } + }, + "ixo-src": { + "flake": false, + "locked": { + "lastModified": 1645476442, + "narHash": "sha256-Ewp9UyoH6z7YGrcXVpYJveRvDq02c1mNZj2hzlOoW8s=", + "owner": "ixofoundation", + "repo": "ixo-blockchain", + "rev": "2bef5d79205057be71677837dc1174be848e13e9", + "type": "github" + }, + "original": { + "owner": "ixofoundation", + "ref": "v0.18.0-rc1", + "repo": "ixo-blockchain", + "type": "github" + } + }, + "juno-src": { + "flake": false, + "locked": { + "lastModified": 1697166503, + "narHash": "sha256-z9TOeDyUnn1T8Z662XqQJ9ydVIKKB54YISt7ms4xvos=", + "owner": "CosmosContracts", + "repo": "juno", + "rev": "48507ed9b83511089cbf1fdc5bae54cae4a7f4b2", + "type": "github" + }, + "original": { + "owner": "CosmosContracts", + "ref": "v17.1.1", + "repo": "juno", + "type": "github" + } + }, + "migaloo-src": { + "flake": false, + "locked": { + "lastModified": 1699273936, + "narHash": "sha256-O+vGWFnV3+bvXinxl1QjVyDnQskp5H1VnlL+TaMfiSs=", + "owner": "White-Whale-Defi-Platform", + "repo": "migaloo-chain", + "rev": "de98de2dd96917ae1ab79161d573fc0b4ee1facf", + "type": "github" + }, + "original": { + "owner": "White-Whale-Defi-Platform", + "ref": "v3.0.2", + "repo": "migaloo-chain", + "type": "github" + } + }, + "namada-src": { + "flake": false, + "locked": { + "lastModified": 1702488720, + "narHash": "sha256-WyIVffqszY3rz3ClQJlpDaexLGQk8pVK+Y3k/D9Lvxg=", + "owner": "anoma", + "repo": "namada", + "rev": "468d3d3bcadd2bd11760855d2bbfcc0b4ce27e14", + "type": "github" + }, + "original": { + "owner": "anoma", + "ref": "v0.28.1", + "repo": "namada", + "type": "github" + } + }, + "neutron-src": { + "flake": false, + "locked": { + "lastModified": 1701174344, + "narHash": "sha256-NuoOlrciBeL2f/A7wlQBqYlYJhSYucXRhLgxdasfyhI=", + "owner": "neutron-org", + "repo": "neutron", + "rev": "e605ed3db4381994ee8185ba4a0ff0877d34e67f", + "type": "github" + }, + "original": { + "owner": "neutron-org", + "ref": "v2.0.0", + "repo": "neutron", + "type": "github" + } + }, + "nix-std": { + "locked": { + "lastModified": 1701658249, + "narHash": "sha256-KIt1TUuBvldhaVRta010MI5FeQlB8WadjqljybjesN0=", + "owner": "chessai", + "repo": "nix-std", + "rev": "715db541ffff4194620e48d210b76f73a74b5b5d", + "type": "github" + }, + "original": { + "owner": "chessai", + "repo": "nix-std", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1702272962, + "narHash": "sha256-D+zHwkwPc6oYQ4G3A1HuadopqRwUY/JkMwHz1YF7j4Q=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "master", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "dir": "lib", + "lastModified": 1701253981, + "narHash": "sha256-ztaDIyZ7HrTAfEEUt9AtTDNoCYxUdSd6NrRHaYOIxtk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e92039b55bcd58469325ded85d4f58dd5a4eaf58", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_2": { + "locked": { + "dir": "lib", + "lastModified": 1701253981, + "narHash": "sha256-ztaDIyZ7HrTAfEEUt9AtTDNoCYxUdSd6NrRHaYOIxtk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e92039b55bcd58469325ded85d4f58dd5a4eaf58", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1681358109, + "narHash": "sha256-eKyxW4OohHQx9Urxi7TQlFBTDWII+F+x2hklDOQPB50=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "96ba1c52e54e74c3197f4d43026b3f3d92e83ff9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1674990008, + "narHash": "sha256-4zOyp+hFW2Y7imxIpZqZGT8CEqKmDjwgfD6BzRUE0mQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2bbcbe6c626d339b25a4995711f07625b508214", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1703438236, + "narHash": "sha256-aqVBq1u09yFhL7bj1/xyUeJjzr92fXVvQSSEx6AdB1M=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5f64a12a728902226210bf01d25ec6cbb9d9265b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "osmosis-src": { + "flake": false, + "locked": { + "lastModified": 1702398856, + "narHash": "sha256-4uLO7izIZ8JvKTfUXbYkxQFpIjwMEcO81WvhklrzI9E=", + "owner": "osmosis-labs", + "repo": "osmosis", + "rev": "b0aee0006ce55d0851773084bd7880db7e32ad70", + "type": "github" + }, + "original": { + "owner": "osmosis-labs", + "ref": "v21.0.0", + "repo": "osmosis", + "type": "github" + } + }, + "provenance-src": { + "flake": false, + "locked": { + "lastModified": 1699901286, + "narHash": "sha256-dTX3kg2QUsC9SwsaommP4IFgIdQgWZrGQNtp/B+fzys=", + "owner": "provenance-io", + "repo": "provenance", + "rev": "91b0813de2f93d03cefe8efb226dc32f02690840", + "type": "github" + }, + "original": { + "owner": "provenance-io", + "ref": "v1.17.0", + "repo": "provenance", + "type": "github" + } + }, + "regen-src": { + "flake": false, + "locked": { + "lastModified": 1645832054, + "narHash": "sha256-lDb0/Bw4hAX71jsCQJUju1mKYNacWEVezx6+KdIdu6Q=", + "owner": "regen-network", + "repo": "regen-ledger", + "rev": "5fb6268ed18a488ab88fb3bfa4b84e10892a7562", + "type": "github" + }, + "original": { + "owner": "regen-network", + "ref": "v3.0.0", + "repo": "regen-ledger", + "type": "github" + } + }, + "relayer-src": { + "flake": false, + "locked": { + "lastModified": 1635197290, + "narHash": "sha256-xD+xZG4Gb6557y/jkXTGdbt8qJ6izMgC4H3uo2/j5vU=", + "owner": "cosmos", + "repo": "relayer", + "rev": "7797aa103af68faa4269af586fe6df1d30e91d4a", + "type": "github" + }, + "original": { + "owner": "cosmos", + "ref": "v1.0.0", + "repo": "relayer", + "type": "github" + } + }, + "root": { + "inputs": { + "cosmos": "cosmos", + "flake-parts": "flake-parts_2", + "gomod2nix": "gomod2nix_2", + "nixpkgs": "nixpkgs_4" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1702347444, + "narHash": "sha256-ueDw7aQf4Xyk69XnDD0YNWDlFdlOgJGPeWFa7uu/cfw=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "bc13176f27cf3be724d18924b4f6aa47686ca2e3", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "sbt-derivation": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1698464090, + "narHash": "sha256-Pnej7WZIPomYWg8f/CZ65sfW85IfIUjYhphMMg7/LT0=", + "owner": "zaninime", + "repo": "sbt-derivation", + "rev": "6762cf2c31de50efd9ff905cbcc87239995a4ef9", + "type": "github" + }, + "original": { + "owner": "zaninime", + "repo": "sbt-derivation", + "type": "github" + } + }, + "sconfig-src": { + "flake": false, + "locked": { + "lastModified": 1679585941, + "narHash": "sha256-ywh9IcqMWbRHqJkGJezcDCvfbBYNJH7ualKvPJQRcHA=", + "owner": "freshautomations", + "repo": "sconfig", + "rev": "41450b55f3b37b4b7a0fdf4a69c707619dbeb47c", + "type": "github" + }, + "original": { + "owner": "freshautomations", + "repo": "sconfig", + "type": "github" + } + }, + "sentinel-src": { + "flake": false, + "locked": { + "lastModified": 1647195309, + "narHash": "sha256-+ZobsjLNxVL3+zi6OEFQhff6Gbd9kng8B0haqcOoiP0=", + "owner": "sentinel-official", + "repo": "hub", + "rev": "7001dc8bc4517efa33cfcc83e8b127528b5bdf2e", + "type": "github" + }, + "original": { + "owner": "sentinel-official", + "ref": "v0.9.0-rc0", + "repo": "hub", + "type": "github" + } + }, + "sifchain-src": { + "flake": false, + "locked": { + "lastModified": 1648486445, + "narHash": "sha256-n5fmWtdrc0Rhs6Uo+zjcSXmyEFVIsA5L9dlrbRXGDmU=", + "owner": "Sifchain", + "repo": "sifnode", + "rev": "269cfadf6a4c08879247c2b8373323ae7239a425", + "type": "github" + }, + "original": { + "owner": "Sifchain", + "ref": "v0.12.1", + "repo": "sifnode", + "type": "github" + } + }, + "stargaze-src": { + "flake": false, + "locked": { + "lastModified": 1645539964, + "narHash": "sha256-5I5pdnBJHwNaI2Soet+zH3aH+pUbYdC9TgHBjOd1TmA=", + "owner": "public-awesome", + "repo": "stargaze", + "rev": "6ee57f18714a6d94cc6205afcd1af2ab655f8f0f", + "type": "github" + }, + "original": { + "owner": "public-awesome", + "ref": "v3.0.0", + "repo": "stargaze", + "type": "github" + } + }, + "stoml-src": { + "flake": false, + "locked": { + "lastModified": 1666796497, + "narHash": "sha256-Adjag1/Hd2wrar2/anD6jQEMDvUc2TOIG7DlEgxpTXc=", + "owner": "freshautomations", + "repo": "stoml", + "rev": "4b2cd09b5795a54fddc215f0d24e24071894b3cf", + "type": "github" + }, + "original": { + "owner": "freshautomations", + "repo": "stoml", + "type": "github" + } + }, + "stride-consumer-src": { + "flake": false, + "locked": { + "lastModified": 1689464372, + "narHash": "sha256-DByig9ISs9x9Kvakc8LFL558VKhM+UBiaESWgyVzI0w=", + "owner": "Stride-Labs", + "repo": "stride", + "rev": "bbf0bb7f52878f3205c76bb1e96662fe7bd7af8d", + "type": "github" + }, + "original": { + "owner": "Stride-Labs", + "ref": "v12.1.0", + "repo": "stride", + "type": "github" + } + }, + "stride-src": { + "flake": false, + "locked": { + "lastModified": 1679819302, + "narHash": "sha256-fdjnFHPBZNnhDyVoMuPfqNb6YUYRdcMO73FlZHjIuzA=", + "owner": "Stride-Labs", + "repo": "stride", + "rev": "3c69e7644859981b1fd9313eb1f0c5e5886e4a0d", + "type": "github" + }, + "original": { + "owner": "Stride-Labs", + "ref": "v8.0.0", + "repo": "stride", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "umee-src": { + "flake": false, + "locked": { + "lastModified": 1649261156, + "narHash": "sha256-hydRL/88fHCW/k7z7GoqAwvynZuvLEDLyA6A9Cm+6UY=", + "owner": "umee-network", + "repo": "umee", + "rev": "42f57545251ce5337dcc5fe4309520ead89183b9", + "type": "github" + }, + "original": { + "owner": "umee-network", + "ref": "v2.0.0", + "repo": "umee", + "type": "github" + } + }, + "wasmd-src": { + "flake": false, + "locked": { + "lastModified": 1669987561, + "narHash": "sha256-F0p555FEeA405tuLn82yUEbRZpJLs85GrUKvSrjTdjk=", + "owner": "CosmWasm", + "repo": "wasmd", + "rev": "a347ace2ff41539fe06c68168bc6f28d6ca9fa52", + "type": "github" + }, + "original": { + "owner": "CosmWasm", + "ref": "v0.30.0", + "repo": "wasmd", + "type": "github" + } + }, + "wasmd_next-src": { + "flake": false, + "locked": { + "lastModified": 1682094944, + "narHash": "sha256-b+6XhBdKyQlrzsYxVRrDf4vHpv8GAJkGwHVfJ9sdf3U=", + "owner": "CosmWasm", + "repo": "wasmd", + "rev": "c2bb27d289f7f72f1471a4b33cb08fdfc8d66f63", + "type": "github" + }, + "original": { + "owner": "CosmWasm", + "ref": "v0.40.0-rc.1", + "repo": "wasmd", + "type": "github" + } + }, + "wasmvm_1-src": { + "flake": false, + "locked": { + "lastModified": 1652698028, + "narHash": "sha256-4m64mPwFLz7aZEKVxM2lJQtX98BkhdKTZb3evpDOk/4=", + "owner": "CosmWasm", + "repo": "wasmvm", + "rev": "bc49a2f4842d023c0038798f343b56f3f0530646", + "type": "github" + }, + "original": { + "owner": "CosmWasm", + "ref": "v1.0.0", + "repo": "wasmvm", + "type": "github" + } + }, + "wasmvm_1_1_1-src": { + "flake": false, + "locked": { + "lastModified": 1663600745, + "narHash": "sha256-9K/G7Wu/TfW4Z+lseEutXbdtr+A40nbVejBphegF5z4=", + "owner": "CosmWasm", + "repo": "wasmvm", + "rev": "3d791055751e428f93f54f64c2d20d20da2ff2a9", + "type": "github" + }, + "original": { + "owner": "CosmWasm", + "ref": "v1.1.1", + "repo": "wasmvm", + "type": "github" + } + }, + "wasmvm_1_1_2-src": { + "flake": false, + "locked": { + "lastModified": 1681833975, + "narHash": "sha256-EbzMNkZUO94jEdX0WgAdy5qfhlCG3lpHpVHyT2FcSDw=", + "owner": "CosmWasm", + "repo": "wasmvm", + "rev": "4f84395b1c623483a3c7936c990c2f7e5dad70d8", + "type": "github" + }, + "original": { + "owner": "CosmWasm", + "ref": "v1.1.2", + "repo": "wasmvm", + "type": "github" + } + }, + "wasmvm_1_2_3-src": { + "flake": false, + "locked": { + "lastModified": 1681831436, + "narHash": "sha256-GscUMJ0Tkg77S9IYA9komyKKoa1AyVXSSaU8hw3ZNwk=", + "owner": "CosmWasm", + "repo": "wasmvm", + "rev": "61e41ae2a80081224f469614a267b0ba2a2d305f", + "type": "github" + }, + "original": { + "owner": "CosmWasm", + "ref": "v1.2.3", + "repo": "wasmvm", + "type": "github" + } + }, + "wasmvm_1_2_4-src": { + "flake": false, + "locked": { + "lastModified": 1685977963, + "narHash": "sha256-/GOvkKLQwsPms7h7yEZYLwbZn9Lzk5qQnBXXoZ/R6JM=", + "owner": "CosmWasm", + "repo": "wasmvm", + "rev": "ba491fe9a663e0b45728dd5f0c43f6a93c97f5fe", + "type": "github" + }, + "original": { + "owner": "CosmWasm", + "ref": "v1.2.4", + "repo": "wasmvm", + "type": "github" + } + }, + "wasmvm_1_3_0-src": { + "flake": false, + "locked": { + "lastModified": 1689589428, + "narHash": "sha256-rsTYvbkYpDkUE4IvILdSL3hXMgAWxz5ltGotJB2t1e4=", + "owner": "CosmWasm", + "repo": "wasmvm", + "rev": "71a9c0dc0ecf9623148e82facb3564fbbf0a896f", + "type": "github" + }, + "original": { + "owner": "CosmWasm", + "ref": "v1.3.0", + "repo": "wasmvm", + "type": "github" + } + }, + "wasmvm_1_5_0-src": { + "flake": false, + "locked": { + "lastModified": 1698746477, + "narHash": "sha256-l0cNF0YjviEl/JLJ4VdvDtIGuAYyFfncVo83ROfQFD8=", + "owner": "CosmWasm", + "repo": "wasmvm", + "rev": "2041b184c146f278157d195361bc6cc6b56cc9d4", + "type": "github" + }, + "original": { + "owner": "CosmWasm", + "ref": "v1.5.0", + "repo": "wasmvm", + "type": "github" + } + }, + "wasmvm_1_beta7-src": { + "flake": false, + "locked": { + "lastModified": 1646675433, + "narHash": "sha256-tt9aAPLxtIRsG1VFM1YAIHSotuBl170EiBcHSWTtARI=", + "owner": "CosmWasm", + "repo": "wasmvm", + "rev": "f7015565a59255cd09ebfcbf9345f3c87666fedd", + "type": "github" + }, + "original": { + "owner": "CosmWasm", + "ref": "v1.0.0-beta7", + "repo": "wasmvm", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} \ No newline at end of file diff --git a/flake.nix b/flake.nix new file mode 100644 index 000000000..fd77c004f --- /dev/null +++ b/flake.nix @@ -0,0 +1,88 @@ +{ + description = "composable-cosmos"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + gomod2nix = { + url = github:nix-community/gomod2nix; + inputs.nixpkgs.follows = "nixpkgs"; + }; + cosmos = { + url = "github:informalsystems/cosmos.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + outputs = inputs @ { + flake-parts, + gomod2nix, + cosmos, + self, + ... + }: + flake-parts.lib.mkFlake {inherit inputs;} { + imports = [ + ]; + systems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"]; + perSystem = { + config, + self', + inputs', + pkgs, + system, + ... + }: let + inherit (inputs.gomod2nix.legacyPackages.${system}) buildGoApplication mkGoEvn gomod2nix; + libwasmvm = cosmos.packages.${system}.libwasmvm_1_5_0; + cosmwasm-check = cosmos.packages.${system}.cosmwasm-check; + cosmosLib = cosmos.lib {inherit pkgs cosmwasm-check;}; + in { + formatter = pkgs.alejandra; + devShells = { + default = pkgs.mkShell { + buildInputs = with pkgs; [ + bingo + gci + gnumake + go + delve + golangci-lint + gomod2nix + gotools + libwasmvm + ]; + }; + }; + + packages = rec { + centaurid = buildGoApplication rec { + pname = "centaurid"; + version = "v7.0.0"; + src = ./.; + subPackages = ["cmd/${pname}"]; + modules = ./gomod2nix.toml; + preFixup = '' + ${cosmosLib.wasmdPreFixupPhase libwasmvm pname} + ''; + checkPhase = "true"; + buildInputs = [libwasmvm]; + ldflags = '' + -X github.com/cosmos/cosmos-sdk/version.Name=centauri -X github.com/cosmos/cosmos-sdk/version.AppName=${pname} -X github.com/cosmos/cosmos-sdk/version.Version=${version} -X github.com/cosmos/cosmos-sdk/version.Commit=${self.rev or self.dirtyRev or "dirty"} -X github.com/cometbft/cometbft/version.TMCoreSemVer=v0.37.2 + ''; + }; + default = ci; + ci = pkgs.writeShellApplication { + name = "ci"; + text = '' + go get mvdan.cc/gofumpt + go get github.com/client9/misspell/cmd/misspell + go get golang.org/x/tools/cmd/goimports + make lint + nix fmt + go mod tidy + golangci-lint run --fix + gomod2nix + ''; + }; + }; + }; + }; +} diff --git a/go.mod b/go.mod index d402949a6..69929be76 100644 --- a/go.mod +++ b/go.mod @@ -1,80 +1,97 @@ module github.com/notional-labs/composable/v6 -go 1.20 +go 1.22 require ( - cosmossdk.io/math v1.1.2 - cosmossdk.io/simapp v0.0.0-20230608160436-666c345ad23d - github.com/CosmWasm/wasmd v0.40.1 + cosmossdk.io/math v1.3.0 + cosmossdk.io/x/tx v0.13.1 + github.com/CosmWasm/wasmd v0.50.0 github.com/client9/misspell v0.3.4 - github.com/cometbft/cometbft v0.37.2 - github.com/cometbft/cometbft-db v0.8.0 - github.com/cosmos/cosmos-proto v1.0.0-beta.2 - github.com/cosmos/cosmos-sdk v0.47.5 - github.com/cosmos/gogoproto v1.4.10 - github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7 v7.0.0 - github.com/cosmos/ibc-go/v7 v7.3.1 - github.com/gogo/protobuf v1.3.2 - github.com/golang/protobuf v1.5.3 - github.com/golangci/golangci-lint v1.50.1 - github.com/gorilla/mux v1.8.0 + github.com/cometbft/cometbft v0.38.6 + github.com/cosmos/cosmos-proto v1.0.0-beta.4 + github.com/cosmos/cosmos-sdk v0.50.5 + github.com/cosmos/gogoproto v1.4.12 + github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8 v8.0.2 + github.com/cosmos/ibc-apps/modules/async-icq/v8 v8.0.0 + github.com/cosmos/ibc-go/modules/capability v1.0.0 + github.com/cosmos/ibc-go/modules/light-clients/08-wasm v0.1.1-0.20231213092650-57fcdb9a9a9d + github.com/cosmos/ibc-go/v8 v8.2.1 + github.com/gogo/protobuf v1.3.3 + github.com/golang/protobuf v1.5.4 + github.com/golangci/golangci-lint v1.52.0 + github.com/gorilla/mux v1.8.1 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/spf13/cast v1.5.1 - github.com/spf13/cobra v1.7.0 - github.com/strangelove-ventures/async-icq/v7 v7.0.0-20230413165143-a3b65ccdc897 - github.com/stretchr/testify v1.8.4 - github.com/terra-money/alliance v0.1.1-0.20230419080242-b29b0ec11186 - golang.org/x/tools v0.6.0 - google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529 - google.golang.org/grpc v1.56.2 - gotest.tools/v3 v3.5.0 + github.com/spf13/cast v1.6.0 + github.com/spf13/cobra v1.8.0 + github.com/stretchr/testify v1.9.0 + golang.org/x/tools v0.18.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240221002015-b0ce06bbee7c + google.golang.org/grpc v1.62.1 + gotest.tools/v3 v3.5.1 mvdan.cc/gofumpt v0.4.0 ) +require github.com/cometbft/cometbft-db v0.11.0 // indirect + require ( - 4d63.com/gochecknoglobals v0.1.0 // indirect - github.com/Abirdcfly/dupword v0.0.7 // indirect - github.com/Antonboom/errname v0.1.7 // indirect - github.com/Antonboom/nilnil v0.1.1 // indirect + 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect + 4d63.com/gochecknoglobals v0.2.1 // indirect + cosmossdk.io/client/v2 v2.0.0-beta.1 + cosmossdk.io/collections v0.4.0 // indirect + cosmossdk.io/x/circuit v0.1.0 + github.com/Abirdcfly/dupword v0.0.11 // indirect + github.com/Antonboom/errname v0.1.9 // indirect + github.com/Antonboom/nilnil v0.1.3 // indirect github.com/BurntSushi/toml v1.2.1 // indirect + github.com/DataDog/datadog-go v4.8.3+incompatible // indirect + github.com/DataDog/zstd v1.5.5 // indirect github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 // indirect github.com/Masterminds/semver v1.5.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OpenPeeDeeP/depguard v1.1.1 // indirect github.com/alexkohler/prealloc v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect - github.com/ashanbrown/forbidigo v1.3.0 // indirect + github.com/ashanbrown/forbidigo v1.5.1 // indirect github.com/ashanbrown/makezero v1.1.1 // indirect + github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/bkielbasa/cyclop v1.2.0 // indirect github.com/blizzy78/varnamelen v0.8.0 // indirect - github.com/bombsimon/wsl/v3 v3.3.0 // indirect - github.com/breml/bidichk v0.2.3 // indirect - github.com/breml/errchkjson v0.3.0 // indirect + github.com/bombsimon/wsl/v3 v3.4.0 // indirect + github.com/breml/bidichk v0.2.4 // indirect + github.com/breml/errchkjson v0.3.1 // indirect github.com/butuzov/ireturn v0.1.1 // indirect - github.com/charithe/durationcheck v0.0.9 // indirect - github.com/chavacava/garif v0.0.0-20220630083739-93517212f375 // indirect - github.com/cockroachdb/errors v1.10.0 // indirect + github.com/charithe/durationcheck v0.0.10 // indirect + github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8 // indirect + github.com/cockroachdb/errors v1.11.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect + github.com/cosmos/cosmos-db v1.0.2 github.com/curioswitch/go-reassign v0.2.0 // indirect - github.com/daixiang0/gci v0.8.1 // indirect + github.com/daixiang0/gci v0.10.1 // indirect github.com/denis-tingaikin/go-header v0.4.3 // indirect + github.com/distribution/reference v0.5.0 // indirect + github.com/emicklei/dot v1.6.1 // indirect github.com/esimonov/ifshort v1.0.4 // indirect github.com/ettle/strcase v0.1.1 // indirect - github.com/fatih/color v1.13.0 // indirect + github.com/fatih/color v1.16.0 // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/firefart/nonamedreturns v1.0.4 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect - github.com/getsentry/sentry-go v0.23.0 // indirect - github.com/go-critic/go-critic v0.6.5 // indirect - github.com/go-toolsmith/astcast v1.0.0 // indirect - github.com/go-toolsmith/astcopy v1.0.2 // indirect - github.com/go-toolsmith/astequal v1.0.3 // indirect - github.com/go-toolsmith/astfmt v1.0.0 // indirect - github.com/go-toolsmith/astp v1.0.0 // indirect - github.com/go-toolsmith/strparse v1.0.0 // indirect - github.com/go-toolsmith/typep v1.0.2 // indirect - github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b // indirect + github.com/getsentry/sentry-go v0.27.0 // indirect + github.com/go-critic/go-critic v0.7.0 // indirect + github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-toolsmith/astcast v1.1.0 // indirect + github.com/go-toolsmith/astcopy v1.1.0 // indirect + github.com/go-toolsmith/astequal v1.1.0 // indirect + github.com/go-toolsmith/astfmt v1.1.0 // indirect + github.com/go-toolsmith/astp v1.1.0 // indirect + github.com/go-toolsmith/strparse v1.1.0 // indirect + github.com/go-toolsmith/typep v1.1.0 // indirect + github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 // indirect @@ -83,75 +100,88 @@ require ( github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 // indirect github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 // indirect github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca // indirect - github.com/golangci/misspell v0.3.5 // indirect + github.com/golangci/misspell v0.4.0 // indirect github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 // indirect github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 // indirect - github.com/google/s2a-go v0.1.4 // indirect - github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 // indirect github.com/gostaticanalysis/analysisutil v0.7.1 // indirect github.com/gostaticanalysis/comment v1.4.2 // indirect github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect github.com/gostaticanalysis/nilerr v0.1.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-hclog v1.6.2 // indirect + github.com/hashicorp/go-metrics v0.5.3 github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-plugin v1.6.0 // indirect + github.com/hashicorp/yamux v0.1.1 // indirect github.com/hexops/gotextdiff v1.0.3 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect github.com/jgautheron/goconst v1.5.1 // indirect github.com/jingyugao/rowserrcheck v1.1.1 // indirect github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect github.com/julz/importas v0.1.0 // indirect - github.com/kisielk/errcheck v1.6.2 // indirect + github.com/junk1tm/musttag v0.5.0 // indirect + github.com/kisielk/errcheck v1.6.3 // indirect github.com/kisielk/gotool v1.0.0 // indirect - github.com/kkHAIKE/contextcheck v1.1.3 // indirect + github.com/kkHAIKE/contextcheck v1.1.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/kulti/thelper v0.6.3 // indirect github.com/kunwardeep/paralleltest v1.0.6 // indirect - github.com/kyoh86/exportloopref v0.1.8 // indirect + github.com/kyoh86/exportloopref v0.1.11 // indirect github.com/ldez/gomoddirectives v0.2.3 // indirect - github.com/ldez/tagliatelle v0.3.1 // indirect - github.com/leonklingele/grouper v1.1.0 // indirect - github.com/linxGnu/grocksdb v1.7.16 // indirect + github.com/ldez/tagliatelle v0.4.0 // indirect + github.com/leonklingele/grouper v1.1.1 // indirect + github.com/linxGnu/grocksdb v1.8.14 // indirect github.com/lufeee/execinquery v1.2.1 // indirect github.com/maratori/testableexamples v1.0.0 // indirect - github.com/maratori/testpackage v1.1.0 // indirect - github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 // indirect - github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/maratori/testpackage v1.1.1 // indirect + github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect + github.com/mattn/go-runewidth v0.0.14 // indirect github.com/mbilski/exhaustivestruct v1.2.0 // indirect - github.com/mgechev/revive v1.2.4 // indirect - github.com/moricho/tparallel v0.2.1 // indirect + github.com/mgechev/revive v1.3.1 // indirect + github.com/moricho/tparallel v0.3.0 // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect - github.com/nishanths/exhaustive v0.8.3 // indirect + github.com/nishanths/exhaustive v0.9.5 // indirect github.com/nishanths/predeclared v0.2.2 // indirect + github.com/nunnatsa/ginkgolinter v0.9.0 // indirect + github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect + github.com/oklog/run v1.1.0 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d // indirect - github.com/polyfloyd/go-errorlint v1.0.5 // indirect - github.com/quasilyte/go-ruleguard v0.3.18 // indirect - github.com/quasilyte/gogrep v0.0.0-20220828223005-86e4605de09f // indirect - github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 // indirect + github.com/polyfloyd/go-errorlint v1.4.5 // indirect + github.com/quasilyte/go-ruleguard v0.4.0 // indirect + github.com/quasilyte/gogrep v0.5.0 // indirect + github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect - github.com/rogpeppe/go-internal v1.11.0 // indirect - github.com/ryancurrah/gomodguard v1.2.4 // indirect - github.com/ryanrolds/sqlclosecheck v0.3.0 // indirect - github.com/sanposhiho/wastedassign/v2 v2.0.6 // indirect + github.com/rivo/uniseg v0.2.0 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/ryancurrah/gomodguard v1.3.0 // indirect + github.com/ryanrolds/sqlclosecheck v0.4.0 // indirect + github.com/sagikazarmark/locafero v0.4.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect - github.com/sashamelentyev/usestdlibvars v1.20.0 // indirect - github.com/securego/gosec/v2 v2.13.1 // indirect + github.com/sashamelentyev/usestdlibvars v1.23.0 // indirect + github.com/securego/gosec/v2 v2.15.0 // indirect github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect github.com/sirupsen/logrus v1.9.0 // indirect github.com/sivchari/containedctx v1.0.2 // indirect github.com/sivchari/nosnakecase v1.7.0 // indirect - github.com/sivchari/tenv v1.7.0 // indirect - github.com/sonatard/noctx v0.0.1 // indirect - github.com/sourcegraph/go-diff v0.6.1 // indirect + github.com/sivchari/tenv v1.7.1 // indirect + github.com/sonatard/noctx v0.0.2 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect + github.com/sourcegraph/go-diff v0.7.0 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect - github.com/stretchr/objx v0.5.0 // indirect - github.com/tdakkota/asciicheck v0.1.1 // indirect + github.com/stretchr/objx v0.5.2 // indirect + github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect + github.com/tdakkota/asciicheck v0.2.0 // indirect github.com/tetafro/godot v1.4.11 // indirect - github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 // indirect - github.com/timonwong/loggercheck v0.9.3 // indirect - github.com/tomarrell/wrapcheck/v2 v2.7.0 // indirect + github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e // indirect + github.com/timonwong/loggercheck v0.9.4 // indirect + github.com/tomarrell/wrapcheck/v2 v2.8.1 // indirect github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect github.com/ultraware/funlen v0.0.3 // indirect github.com/ultraware/whitespace v0.0.5 // indirect @@ -159,187 +189,187 @@ require ( github.com/yagipy/maintidx v1.0.0 // indirect github.com/yeya24/promlinter v0.2.0 // indirect gitlab.com/bosi/decorder v0.2.3 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect + go.opentelemetry.io/otel v1.22.0 // indirect + go.opentelemetry.io/otel/metric v1.22.0 // indirect + go.opentelemetry.io/otel/trace v1.22.0 // indirect go.uber.org/atomic v1.10.0 // indirect - go.uber.org/multierr v1.8.0 // indirect - go.uber.org/zap v1.23.0 // indirect - golang.org/x/exp/typeparams v0.0.0-20220827204233-334a2380cb91 // indirect - golang.org/x/mod v0.11.0 // indirect - golang.org/x/sync v0.2.0 // indirect - google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect - honnef.co/go/tools v0.3.3 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.24.0 // indirect + golang.org/x/exp/typeparams v0.0.0-20230307190834-24139beb5833 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/sync v0.6.0 // indirect + golang.org/x/time v0.5.0 // indirect + google.golang.org/genproto v0.0.0-20240221002015-b0ce06bbee7c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c // indirect + honnef.co/go/tools v0.4.3 // indirect mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect - mvdan.cc/unparam v0.0.0-20220706161116-678bad134442 // indirect + mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d // indirect ) require ( - cloud.google.com/go v0.110.4 // indirect - cloud.google.com/go/compute v1.20.1 // indirect + cloud.google.com/go v0.112.0 // indirect + cloud.google.com/go/compute v1.24.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.0 // indirect - cloud.google.com/go/storage v1.30.1 // indirect - cosmossdk.io/log v1.2.1 // indirect - github.com/CosmWasm/wasmvm v1.2.4 // indirect; indirect // safe because we're using permissioned cosmwasm - github.com/aws/aws-sdk-go v1.44.203 // indirect + cloud.google.com/go/iam v1.1.6 // indirect + cloud.google.com/go/storage v1.36.0 // indirect + cosmossdk.io/log v1.3.1 + github.com/CosmWasm/wasmvm v1.5.2 // indirect // safe because we're using permissioned cosmwasm + github.com/aws/aws-sdk-go v1.45.25 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/chzyer/readline v1.5.1 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect - github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect - github.com/docker/distribution v2.8.2+incompatible // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/uuid v1.3.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect - github.com/googleapis/gax-go/v2 v2.11.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.1 // indirect + github.com/hashicorp/go-getter v1.7.3 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect - github.com/iancoleman/orderedmap v0.2.0 // indirect + github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/rs/zerolog v1.30.0 // indirect + github.com/rs/zerolog v1.32.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/ulikunitz/xz v0.5.11 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/oauth2 v0.8.0 // indirect - golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.126.0 // indirect - google.golang.org/appengine v1.6.7 // indirect + golang.org/x/oauth2 v0.18.0 // indirect + google.golang.org/api v0.162.0 // indirect + google.golang.org/appengine v1.6.8 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) require ( - cosmossdk.io/api v0.3.1 - cosmossdk.io/core v0.5.1 // indirect + cosmossdk.io/api v0.7.3 // indirect + cosmossdk.io/core v0.12.1-0.20231114100755-569e3ff6a0d7 cosmossdk.io/depinject v1.0.0-alpha.4 // indirect - cosmossdk.io/errors v1.0.0 - cosmossdk.io/tools/rosetta v0.2.1 - filippo.io/edwards25519 v1.0.0 // indirect - github.com/99designs/keyring v1.2.1 // indirect - github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect - github.com/armon/go-metrics v0.4.1 // indirect + cosmossdk.io/errors v1.0.1 + cosmossdk.io/store v1.1.0 + cosmossdk.io/x/evidence v0.1.0 + cosmossdk.io/x/feegrant v0.1.0 + cosmossdk.io/x/upgrade v0.1.1 + filippo.io/edwards25519 v1.1.0 // indirect + github.com/99designs/keyring v1.2.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect - github.com/cenkalti/backoff/v4 v4.1.3 // indirect + github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/confio/ics23/go v0.9.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/iavl v0.20.0 // indirect - github.com/cosmos/ledger-cosmos-go v0.12.2 // indirect - github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect - github.com/creachadair/taskgroup v0.4.2 // indirect - github.com/danieljoos/wincred v1.1.2 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect + github.com/cosmos/iavl v1.1.1 // indirect + github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect + github.com/danieljoos/wincred v1.2.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect github.com/dgraph-io/badger/v2 v2.2007.4 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/dvsekhvalnov/jose2go v1.5.0 // indirect - github.com/felixge/httpsnoop v1.0.2 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-kit/kit v0.12.0 // indirect + github.com/dvsekhvalnov/jose2go v1.6.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/googleapis v1.4.1 // indirect - github.com/golang/glog v1.1.0 // indirect + github.com/golang/glog v1.2.0 // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.1.2 // indirect - github.com/google/go-cmp v0.5.9 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/orderedcode v0.0.1 // indirect - github.com/gorilla/handlers v1.5.1 // indirect - github.com/gorilla/websocket v1.5.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/gorilla/handlers v1.5.2 // indirect + github.com/gorilla/websocket v1.5.1 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect - github.com/gtank/merlin v0.1.1 // indirect - github.com/gtank/ristretto255 v0.1.2 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect - github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hdevalence/ed25519consensus v0.1.0 // indirect + github.com/hdevalence/ed25519consensus v0.2.0 // indirect github.com/huandu/skiplist v1.2.0 // indirect github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d // indirect - github.com/klauspost/compress v1.16.3 // indirect + github.com/klauspost/compress v1.17.7 // indirect github.com/lib/pq v1.10.7 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/magiconair/properties v1.8.7 // indirect - github.com/mattn/go-isatty v0.0.19 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect - github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/minio/highwayhash v1.0.2 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect - github.com/pelletier/go-toml/v2 v2.0.8 // indirect - github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect + github.com/pelletier/go-toml/v2 v2.2.0 // indirect + github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.15.0 // indirect - github.com/prometheus/client_model v0.3.0 // indirect - github.com/prometheus/common v0.42.0 // indirect - github.com/prometheus/procfs v0.9.0 // indirect - github.com/rakyll/statik v0.1.7 + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect + github.com/prometheus/client_model v0.6.0 // indirect + github.com/prometheus/common v0.50.0 // indirect + github.com/prometheus/procfs v0.13.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/rs/cors v1.8.3 // indirect + github.com/rs/cors v1.10.1 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/spf13/afero v1.9.5 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect - github.com/spf13/viper v1.16.0 - github.com/subosito/gotenv v1.4.2 // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/viper v1.18.2 // indirect + github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tendermint/go-amino v0.16.0 // indirect - github.com/tidwall/btree v1.6.0 // indirect + github.com/tidwall/btree v1.7.0 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.3.7 // indirect - golang.org/x/crypto v0.11.0 // indirect - golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb // indirect - golang.org/x/net v0.12.0 // indirect - golang.org/x/sys v0.11.0 // indirect - golang.org/x/term v0.10.0 // indirect - golang.org/x/text v0.12.0 // indirect - google.golang.org/protobuf v1.31.0 + go.etcd.io/bbolt v1.3.9 // indirect + golang.org/x/crypto v0.21.0 // indirect + golang.org/x/exp v0.0.0-20240314144324-c7f7c6466f7f // indirect + golang.org/x/net v0.22.0 // indirect + golang.org/x/sys v0.18.0 // indirect + golang.org/x/term v0.18.0 // indirect + golang.org/x/text v0.14.0 // indirect + google.golang.org/protobuf v1.33.0 gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - nhooyr.io/websocket v1.8.6 // indirect - pgregory.net/rapid v0.5.5 // indirect - sigs.k8s.io/yaml v1.3.0 + nhooyr.io/websocket v1.8.10 // indirect + pgregory.net/rapid v1.1.0 // indirect + sigs.k8s.io/yaml v1.4.0 ) replace ( + cosmossdk.io/core => cosmossdk.io/core v0.11.0 + // Use the keyring specified by the cosmos-sdk github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 + // lock wasmvm so we do not break the grandpa contract - github.com/CosmWasm/wasmvm => github.com/CosmWasm/wasmvm v1.2.6 + // TODO: check wasm vm compatibility with grandpa contract + github.com/CosmWasm/wasmvm => github.com/CosmWasm/wasmvm v1.5.2 + github.com/cosmos/cosmos-sdk => github.com/notional-labs/cosmos-sdk v0.50.5-patch-validators-trim-tag - github.com/cometbft/cometbft v0.37.2 => github.com/composablefi/cometbft v0.37.2-fixed-len-vote-time-tag + github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8 => github.com/notional-labs/ibc-apps/middleware/packet-forward-middleware/v8 v8.0.0-20240508031447-347412725653 + github.com/cosmos/ibc-go/modules/light-clients/08-wasm => github.com/notional-labs/ibc-go/modules/light-clients/08-wasm v0.0.0-20240522081622-85c49c80dc29 + //github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8 => github.com/notional-labs/ibc-apps/middleware/packet-forward-middleware/v8 v8.0.0-20240504082418-e4d8c9cb7044 + github.com/cosmos/ibc-go/v8 => github.com/notional-labs/ibc-go/v8 v8.0.0-alpha.1.0.20240515181700-c058e14324e8 - github.com/cosmos/cosmos-sdk v0.47.5 => github.com/rust-ninja/cosmos-sdk v0.47.5-patch-validators-trim-tag + // use cosmos-compatible protobufs + github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 - github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7 => github.com/ComposableFi/ibc-apps/middleware/packet-forward-middleware/v7 v7.0.0-20240320115741-f32994360827 - // ibc-go with wasm client - github.com/cosmos/ibc-go/v7 => github.com/ComposableFi/ibc-go/v7 v7.0.0-20240417235838-759a4130305e + github.com/prometheus/client_golang => github.com/prometheus/client_golang v1.18.0 - github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 + github.com/prometheus/common => github.com/prometheus/common v0.47.0 github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 - github.com/terra-money/alliance => github.com/notional-labs/alliance v1.0.1-0.20231106184124-5cc1ff759647 - github.com/zondax/ledger-go => github.com/zondax/ledger-go v0.14.3 ) diff --git a/go.sum b/go.sum index 62ecaa2fd..87bdaa299 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ -4d63.com/gochecknoglobals v0.1.0 h1:zeZSRqj5yCg28tCkIV/z/lWbwvNm5qnKVS15PI8nhD0= -4d63.com/gochecknoglobals v0.1.0/go.mod h1:wfdC5ZjKSPr7CybKEcgJhUOgeAQW1+7WcyK8OvUilfo= +4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA= +4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs= +4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc= +4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -30,28 +32,93 @@ cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+Y cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.110.4 h1:1JYyxKMN9hd5dR2MYTPWkGUgcoxVVhg0LKNKEo0qvmk= -cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= +cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= +cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= +cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= +cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= +cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= +cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= +cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= +cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= +cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= +cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= +cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= +cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= +cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= +cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= +cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= +cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= +cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= +cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= +cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= +cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= +cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= +cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= +cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= +cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= +cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= +cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= +cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= +cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= +cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= +cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= +cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= +cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= +cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= +cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= +cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= +cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= +cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= +cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= +cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= +cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= +cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= +cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= +cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= +cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= +cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= +cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= +cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= +cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= +cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= +cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= +cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= +cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= +cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= +cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= +cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= +cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -59,12 +126,44 @@ cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUM cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= +cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= +cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= +cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= +cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= +cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= +cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= +cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= +cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= +cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= +cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= +cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= +cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= +cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= +cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= +cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= +cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= +cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= +cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= +cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= +cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= +cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= +cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= +cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= +cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= +cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= +cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= +cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= +cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= @@ -72,101 +171,364 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.20.1 h1:6aKEtlUiwEpJzM001l0yFkpXmUVXaN8W+fbkb2AZNbg= +cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= +cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= +cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= +cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= +cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= +cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= +cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= +cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= +cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= +cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= +cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= +cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= +cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= +cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= +cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= +cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= +cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= +cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= +cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= +cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= +cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= +cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= +cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= +cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= +cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= +cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= +cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= +cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= +cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= +cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= +cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= +cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= +cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= +cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= +cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= +cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= +cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= +cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= +cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= +cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= +cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= +cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= +cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= +cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= +cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= +cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= +cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= +cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= +cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= +cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= +cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= +cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= +cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= +cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= +cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= +cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= +cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= +cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= +cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= +cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= +cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= +cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= +cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= +cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= +cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= +cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= +cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= +cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= +cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= +cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= +cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= +cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= +cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= +cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= +cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= +cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= +cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= +cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= +cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.1.0 h1:67gSqaPukx7O8WLLHMa0PNs3EBGd2eE4d+psbO/CO94= -cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= +cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= +cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= +cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= +cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= +cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= +cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= +cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= +cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= +cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= +cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= +cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= +cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= +cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= +cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= +cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= +cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= +cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= +cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= +cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= +cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= +cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= +cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= +cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= +cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= +cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= +cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= +cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= +cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= +cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= +cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= +cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= +cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= +cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= +cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= +cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= +cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= +cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= +cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= +cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= +cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= +cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= +cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= +cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= +cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= +cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= +cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= +cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= +cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= +cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= +cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= +cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= +cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= +cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= +cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= +cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= +cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= +cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= +cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= +cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= +cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= +cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= +cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= +cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= +cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= +cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= +cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= +cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= +cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= +cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= +cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= +cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= +cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= +cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= +cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= +cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= +cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= +cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= +cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= +cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= +cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= +cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= +cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= +cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= +cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= +cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= +cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= +cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= +cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= +cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= +cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= +cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= +cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= +cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= +cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= +cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= +cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= +cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= +cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= +cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= +cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= +cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= +cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= +cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= +cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= +cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= +cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= +cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= +cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= +cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= +cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= +cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= +cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= +cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= +cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= +cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= +cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= +cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= +cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= +cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= +cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= +cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= +cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= +cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= +cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= +cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= +cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= +cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= +cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= +cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= +cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= +cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= +cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= +cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= +cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= +cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= @@ -176,152 +538,222 @@ cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3f cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= -cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= +cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= +cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= +cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= +cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= +cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= +cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= +cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= +cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= +cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= +cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= +cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= +cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= +cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= +cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= +cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= +cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= +cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= +cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= +cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= +cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= +cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= +cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= +cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= +cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= +cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= +cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= +cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= +cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= +cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= +cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= +cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= +cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= +cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= +cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= +cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= +cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= +cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= +cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= +cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= +cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= +cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= +cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= +cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= +cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= +cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= +cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= +cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cosmossdk.io/api v0.3.1 h1:NNiOclKRR0AOlO4KIqeaG6PS6kswOMhHD0ir0SscNXE= -cosmossdk.io/api v0.3.1/go.mod h1:DfHfMkiNA2Uhy8fj0JJlOCYOBp4eWUUJ1te5zBGNyIw= -cosmossdk.io/core v0.5.1 h1:vQVtFrIYOQJDV3f7rw4pjjVqc1id4+mE0L9hHP66pyI= -cosmossdk.io/core v0.5.1/go.mod h1:KZtwHCLjcFuo0nmDc24Xy6CRNEL9Vl/MeimQ2aC7NLE= +cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= +cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= +cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= +cosmossdk.io/api v0.7.3 h1:V815i8YOwOAQa1rLCsSMjVG5Gnzs02JLq+l7ks8s1jk= +cosmossdk.io/api v0.7.3/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/client/v2 v2.0.0-beta.1 h1:XkHh1lhrLYIT9zKl7cIOXUXg2hdhtjTPBUfqERNA1/Q= +cosmossdk.io/client/v2 v2.0.0-beta.1/go.mod h1:JEUSu9moNZQ4kU3ir1DKD5eU4bllmAexrGWjmb9k8qU= +cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= +cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= +cosmossdk.io/core v0.11.0 h1:vtIafqUi+1ZNAE/oxLOQQ7Oek2n4S48SWLG8h/+wdbo= +cosmossdk.io/core v0.11.0/go.mod h1:LaTtayWBSoacF5xNzoF8tmLhehqlA9z1SWiPuNC6X1w= cosmossdk.io/depinject v1.0.0-alpha.4 h1:PLNp8ZYAMPTUKyG9IK2hsbciDWqna2z1Wsl98okJopc= cosmossdk.io/depinject v1.0.0-alpha.4/go.mod h1:HeDk7IkR5ckZ3lMGs/o91AVUc7E596vMaOmslGFM3yU= -cosmossdk.io/errors v1.0.0 h1:nxF07lmlBbB8NKQhtJ+sJm6ef5uV1XkvPXG2bUntb04= -cosmossdk.io/errors v1.0.0/go.mod h1:+hJZLuhdDE0pYN8HkOrVNwrIOYvUGnn6+4fjnJs/oV0= -cosmossdk.io/log v1.2.1 h1:Xc1GgTCicniwmMiKwDxUjO4eLhPxoVdI9vtMW8Ti/uk= -cosmossdk.io/log v1.2.1/go.mod h1:GNSCc/6+DhFIj1aLn/j7Id7PaO8DzNylUZoOYBL9+I4= -cosmossdk.io/math v1.1.2 h1:ORZetZCTyWkI5GlZ6CZS28fMHi83ZYf+A2vVnHNzZBM= -cosmossdk.io/math v1.1.2/go.mod h1:l2Gnda87F0su8a/7FEKJfFdJrM0JZRXQaohlgJeyQh0= -cosmossdk.io/simapp v0.0.0-20230608160436-666c345ad23d h1:E/8y0oG3u9hBR8l4F9MtC0LdZIamPCUwUoLlrHrX86I= -cosmossdk.io/simapp v0.0.0-20230608160436-666c345ad23d/go.mod h1:xbjky3L3DJEylaho6gXplkrMvJ5sFgv+qNX+Nn47bzY= -cosmossdk.io/tools/rosetta v0.2.1 h1:ddOMatOH+pbxWbrGJKRAawdBkPYLfKXutK9IETnjYxw= -cosmossdk.io/tools/rosetta v0.2.1/go.mod h1:Pqdc1FdvkNV3LcNIkYWt2RQY6IP1ge6YWZk8MhhO9Hw= +cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= +cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= +cosmossdk.io/log v1.3.1 h1:UZx8nWIkfbbNEWusZqzAx3ZGvu54TZacWib3EzUYmGI= +cosmossdk.io/log v1.3.1/go.mod h1:2/dIomt8mKdk6vl3OWJcPk2be3pGOS8OQaLUM/3/tCM= +cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= +cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= +cosmossdk.io/store v1.1.0 h1:LnKwgYMc9BInn9PhpTFEQVbL9UK475G2H911CGGnWHk= +cosmossdk.io/store v1.1.0/go.mod h1:oZfW/4Fc/zYqu3JmQcQdUJ3fqu5vnYTn3LZFFy8P8ng= +cosmossdk.io/x/circuit v0.1.0 h1:IAej8aRYeuOMritczqTlljbUVHq1E85CpBqaCTwYgXs= +cosmossdk.io/x/circuit v0.1.0/go.mod h1:YDzblVE8+E+urPYQq5kq5foRY/IzhXovSYXb4nwd39w= +cosmossdk.io/x/evidence v0.1.0 h1:J6OEyDl1rbykksdGynzPKG5R/zm6TacwW2fbLTW4nCk= +cosmossdk.io/x/evidence v0.1.0/go.mod h1:hTaiiXsoiJ3InMz1uptgF0BnGqROllAN8mwisOMMsfw= +cosmossdk.io/x/feegrant v0.1.0 h1:c7s3oAq/8/UO0EiN1H5BIjwVntujVTkYs35YPvvrdQk= +cosmossdk.io/x/feegrant v0.1.0/go.mod h1:4r+FsViJRpcZif/yhTn+E0E6OFfg4n0Lx+6cCtnZElU= +cosmossdk.io/x/nft v0.1.0 h1:VhcsFiEK33ODN27kxKLa0r/CeFd8laBfbDBwYqCyYCM= +cosmossdk.io/x/nft v0.1.0/go.mod h1:ec4j4QAO4mJZ+45jeYRnW7awLHby1JZANqe1hNZ4S3g= +cosmossdk.io/x/tx v0.13.1 h1:Mg+EMp67Pz+NukbJqYxuo8uRp7N/a9uR+oVS9pONtj8= +cosmossdk.io/x/tx v0.13.1/go.mod h1:CBCU6fsRVz23QGFIQBb1DNX2DztJCf3jWyEkHY2nJQ0= +cosmossdk.io/x/upgrade v0.1.1 h1:aoPe2gNvH+Gwt/Pgq3dOxxQVU3j5P6Xf+DaUJTDZATc= +cosmossdk.io/x/upgrade v0.1.1/go.mod h1:MNLptLPcIFK9CWt7Ra//8WUZAxweyRDNcbs5nkOcQy0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= -filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= -github.com/Abirdcfly/dupword v0.0.7 h1:z14n0yytA3wNO2gpCD/jVtp/acEXPGmYu0esewpBt6Q= -github.com/Abirdcfly/dupword v0.0.7/go.mod h1:K/4M1kj+Zh39d2aotRwypvasonOyAMH1c/IZJzE0dmk= -github.com/Antonboom/errname v0.1.7 h1:mBBDKvEYwPl4WFFNwec1CZO096G6vzK9vvDQzAwkako= -github.com/Antonboom/errname v0.1.7/go.mod h1:g0ONh16msHIPgJSGsecu1G/dcF2hlYR/0SddnIAGavU= -github.com/Antonboom/nilnil v0.1.1 h1:PHhrh5ANKFWRBh7TdYmyyq2gyT2lotnvFvvFbylF81Q= -github.com/Antonboom/nilnil v0.1.1/go.mod h1:L1jBqoWM7AOeTD+tSquifKSesRHs4ZdaxvZR+xdJEaI= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= +github.com/Abirdcfly/dupword v0.0.11 h1:z6v8rMETchZXUIuHxYNmlUAuKuB21PeaSymTed16wgU= +github.com/Abirdcfly/dupword v0.0.11/go.mod h1:wH8mVGuf3CP5fsBTkfWwwwKTjDnVVCxtU8d8rgeVYXA= +github.com/Antonboom/errname v0.1.9 h1:BZDX4r3l4TBZxZ2o2LNrlGxSHran4d1u4veZdoORTT4= +github.com/Antonboom/errname v0.1.9/go.mod h1:nLTcJzevREuAsgTbG85UsuiWpMpAqbKD1HNZ29OzE58= +github.com/Antonboom/nilnil v0.1.3 h1:6RTbx3d2mcEu3Zwq9TowQpQMVpP75zugwOtqY1RTtcE= +github.com/Antonboom/nilnil v0.1.3/go.mod h1:iOov/7gRcXkeEU+EMGpBu2ORih3iyVEiWjeste1SJm8= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= -github.com/ComposableFi/ibc-apps/middleware/packet-forward-middleware/v7 v7.0.0-20240320115741-f32994360827 h1:PkDT2gEjAgttuF9lZTP+niYjcXutnmqHHK2UaAL9bLs= -github.com/ComposableFi/ibc-apps/middleware/packet-forward-middleware/v7 v7.0.0-20240320115741-f32994360827/go.mod h1:3PHOr4UiPNtnZJutT22fm5+pjIefTlDEgtWGoOJg3A0= -github.com/ComposableFi/ibc-go/v7 v7.0.0-20240417235838-759a4130305e h1:1X7RvVEC9FfJIZl0FUPVN/SFzHkYKaZjYkZb9+kDmAk= -github.com/ComposableFi/ibc-go/v7 v7.0.0-20240417235838-759a4130305e/go.mod h1:hjcl3RPLSDf0LSXrFyk2iTQCCFs5pfLbJb8h/5gJ2Vg= -github.com/CosmWasm/wasmd v0.40.1 h1:LxbO78t/6S8TkeQlUrJ0m5O87HtAwLx4RGHq3rdrOEU= -github.com/CosmWasm/wasmd v0.40.1/go.mod h1:6EOwnv7MpuFaEqxcUOdFV9i4yvrdOciaY6VQ1o7A3yg= -github.com/CosmWasm/wasmvm v1.2.6 h1:QmOaiJUyeh8+pPCjJBTgWrbi/hCzCuWewduDO85Pcpc= -github.com/CosmWasm/wasmvm v1.2.6/go.mod h1:KO0zfQgCsQ6urWL1MYLlGqRgr7R4an6jo+LWRZjfD4c= +github.com/CosmWasm/wasmd v0.50.0 h1:NVaGqCSTRfb9UTDHJwT6nQIWcb6VjlQl88iI+u1+qjE= +github.com/CosmWasm/wasmd v0.50.0/go.mod h1:UjmShW4l9YxaMytwJZ7IB7MWzHiynSZP3DdWrG0FRtk= +github.com/CosmWasm/wasmvm v1.5.2 h1:+pKB1Mz9GZVt1vadxB+EDdD1FOz3dMNjIKq/58/lrag= +github.com/CosmWasm/wasmvm v1.5.2/go.mod h1:Q0bSEtlktzh7W2hhEaifrFp1Erx11ckQZmjq8FLCyys= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bpDIRRV4/gUtIBjh8Q= +github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= +github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 h1:+r1rSv4gvYn0wmRjC8X7IAzX8QezqtFV9m0MUHFJgts= github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0/go.mod h1:b3g59n2Y+T5xmcxJL+UEG2f8cQploZm1mR/v6BW0mU0= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenPeeDeeP/depguard v1.1.1 h1:TSUznLjvp/4IUP+OQ0t/4jF4QUyxIcVX8YnghZdunyA= github.com/OpenPeeDeeP/depguard v1.1.1/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= +github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= +github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= +github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= +github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= +github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= -github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/ashanbrown/forbidigo v1.3.0 h1:VkYIwb/xxdireGAdJNZoo24O4lmnEWkactplBlWTShc= -github.com/ashanbrown/forbidigo v1.3.0/go.mod h1:vVW7PEdqEFqapJe95xHkTfB1+XvZXBFg8t0sG2FIxmI= +github.com/ashanbrown/forbidigo v1.5.1 h1:WXhzLjOlnuDYPYQo/eFlcFMi8X/kLfvWLYu6CSoebis= +github.com/ashanbrown/forbidigo v1.5.1/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.44.203 h1:pcsP805b9acL3wUqa4JR2vg1k2wnItkDYNvfmcy6F+U= -github.com/aws/aws-sdk-go v1.44.203/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aws/aws-sdk-go v1.45.25 h1:c4fLlh5sLdK2DCRTY1z0hyuJZU4ygxX8m1FswL6/nF4= +github.com/aws/aws-sdk-go v1.45.25/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s= github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= +github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/bkielbasa/cyclop v1.2.0 h1:7Jmnh0yL2DjKfw28p86YTd/B4lRGcNuu12sKE35sM7A= github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI= github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= -github.com/bombsimon/wsl/v3 v3.3.0 h1:Mka/+kRLoQJq7g2rggtgQsjuI/K5Efd87WX96EWFxjM= -github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= -github.com/breml/bidichk v0.2.3 h1:qe6ggxpTfA8E75hdjWPZ581sY3a2lnl0IRxLQFelECI= -github.com/breml/bidichk v0.2.3/go.mod h1:8u2C6DnAy0g2cEq+k/A2+tr9O1s+vHGxWn0LTc70T2A= -github.com/breml/errchkjson v0.3.0 h1:YdDqhfqMT+I1vIxPSas44P+9Z9HzJwCeAzjB8PxP1xw= -github.com/breml/errchkjson v0.3.0/go.mod h1:9Cogkyv9gcT8HREpzi3TiqBxCqDzo8awa92zSDFcofU= +github.com/bombsimon/wsl/v3 v3.4.0 h1:RkSxjT3tmlptwfgEgTgU+KYKLI35p/tviNXNXiL2aNU= +github.com/bombsimon/wsl/v3 v3.4.0/go.mod h1:KkIB+TXkqy6MvK9BDZVbZxKNYsE1/oLRJbIFtf14qqo= +github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/breml/bidichk v0.2.4 h1:i3yedFWWQ7YzjdZJHnPo9d/xURinSq3OM+gyM43K4/8= +github.com/breml/bidichk v0.2.4/go.mod h1:7Zk0kRFt1LIZxtQdl9W9JwGAcLTTkOs+tN7wuEYGJ3s= +github.com/breml/errchkjson v0.3.1 h1:hlIeXuspTyt8Y/UmP5qy1JocGNR00KQHgfaNtRAjoxQ= +github.com/breml/errchkjson v0.3.1/go.mod h1:XroxrzKjdiutFyW3nWhw34VGg7kiMsDQox73yWCGI2U= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= -github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ= +github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= +github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= -github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+/jS+Qg= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= +github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= github.com/butuzov/ireturn v0.1.1 h1:QvrO2QF2+/Cx1WA/vETCIYBKtRjc30vesdoPUNo1EbY= github.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/charithe/durationcheck v0.0.9 h1:mPP4ucLrf/rKZiIG/a9IPXHGlh8p4CzgpyTy6EEutYk= -github.com/charithe/durationcheck v0.0.9/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg= -github.com/chavacava/garif v0.0.0-20220630083739-93517212f375 h1:E7LT642ysztPWE0dfz43cWOvMiF42DyTRC+eZIaO4yI= -github.com/chavacava/garif v0.0.0-20220630083739-93517212f375/go.mod h1:4m1Rv7xfuwWPNKXlThldNuJvutYM6J95wNuuVmn55To= +github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= +github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= +github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8 h1:W9o46d2kbNL06lq7UNDPV0zYLzkrde/bjIqO02eoll0= +github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8/go.mod h1:gakxgyXaaPkxvLw1XQxNGK4I37ys9iBRzNUx/B7pUCo= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= @@ -334,86 +766,90 @@ github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ= +github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/errors v1.10.0 h1:lfxS8zZz1+OjtV4MtNWgboi/W5tyLEB6VQZBXN+0VUU= -github.com/cockroachdb/errors v1.10.0/go.mod h1:lknhIsEVQ9Ss/qKDBQS/UqFSvPQjOwNq2qyKAxtHRqE= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= -github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= -github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= -github.com/composablefi/cometbft v0.37.2-fixed-len-vote-time-tag h1:FCg/7GKon2TJW+frg7yBaOyT/Lr3ZkCHfllWfWVW52U= -github.com/composablefi/cometbft v0.37.2-fixed-len-vote-time-tag/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= -github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= -github.com/confio/ics23/go v0.9.0/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= +github.com/cometbft/cometbft v0.38.6 h1:QSgpCzrGWJ2KUq1qpw+FCfASRpE27T6LQbfEHscdyOk= +github.com/cometbft/cometbft v0.38.6/go.mod h1:8rSPxzUJYquCN8uuBgbUHOMg2KAwvr7CyUw+6ukO4nw= +github.com/cometbft/cometbft-db v0.11.0 h1:M3Lscmpogx5NTbb1EGyGDaFRdsoLWrUWimFEyf7jej8= +github.com/cometbft/cometbft-db v0.11.0/go.mod h1:GDPJAC/iFHNjmZZPN8V8C1yr/eyityhi2W1hz2MGKSc= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= +github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-proto v1.0.0-beta.2 h1:X3OKvWgK9Gsejo0F1qs5l8Qn6xJV/AzgIWR2wZ8Nua8= -github.com/cosmos/cosmos-proto v1.0.0-beta.2/go.mod h1:+XRCLJ14pr5HFEHIUcn51IKXD1Fy3rkEQqt4WqmN4V0= -github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= +github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs= +github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= +github.com/cosmos/cosmos-proto v1.0.0-beta.4 h1:aEL7tU/rLOmxZQ9z4i7mzxcLbSCY48OdY7lIWTLG7oU= +github.com/cosmos/cosmos-proto v1.0.0-beta.4/go.mod h1:oeB+FyVzG3XrQJbJng0EnV8Vljfk9XvTIpGILNU/9Co= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.10 h1:QH/yT8X+c0F4ZDacDv3z+xE3WU1P1Z3wQoLMBRJoKuI= -github.com/cosmos/gogoproto v1.4.10/go.mod h1:3aAZzeRWpAwr+SS/LLkICX2/kDFyaYVzckBDzygIxek= -github.com/cosmos/iavl v0.20.0 h1:fTVznVlepH0KK8NyKq8w+U7c2L6jofa27aFX6YGlm38= -github.com/cosmos/iavl v0.20.0/go.mod h1:WO7FyvaZJoH65+HFOsDir7xU9FWk2w9cHXNW1XHcl7A= +github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= +github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/iavl v1.1.1 h1:64nTi8s3gEoGqhA8TyAWFWfz7/pg0anKzHNSc1ETc7Q= +github.com/cosmos/iavl v1.1.1/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= +github.com/cosmos/ibc-apps/modules/async-icq/v8 v8.0.0 h1:nKP2+Rzlz2iyvTosY5mvP+aEBPe06oaDl3G7xLGBpNI= +github.com/cosmos/ibc-apps/modules/async-icq/v8 v8.0.0/go.mod h1:D3Q380FpWRFtmUQWLosPxachi6w24Og2t5u/Tww5wtY= +github.com/cosmos/ibc-go/modules/capability v1.0.0 h1:r/l++byFtn7jHYa09zlAdSeevo8ci1mVZNO9+V0xsLE= +github.com/cosmos/ibc-go/modules/capability v1.0.0/go.mod h1:D81ZxzjZAe0ZO5ambnvn1qedsFQ8lOwtqicG6liLBco= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 h1:DdzS1m6o/pCqeZ8VOAit/gyATedRgjvkVI+UCrLpyuU= github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76/go.mod h1:0mkLWIoZuQ7uBoospo5Q9zIpqq6rYCPJDSUdeCJvPM8= -github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5saFCr7pDnw= -github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M= -github.com/cosmos/rosetta-sdk-go v0.10.0 h1:E5RhTruuoA7KTIXUcMicL76cffyeoyvNybzUGSKFTcM= -github.com/cosmos/rosetta-sdk-go v0.10.0/go.mod h1:SImAZkb96YbwvoRkzSMQB6noNJXFgWl/ENIznEoYQI4= +github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= +github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creachadair/taskgroup v0.4.2 h1:jsBLdAJE42asreGss2xZGZ8fJra7WtwnHWeJFxv2Li8= -github.com/creachadair/taskgroup v0.4.2/go.mod h1:qiXUOSrbwAY3u0JPGTzObbE3yf9hcXHDKBZ2ZjpCbgM= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cristalhq/acmd v0.8.1/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo= github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= -github.com/daixiang0/gci v0.8.1 h1:T4xpSC+hmsi4CSyuYfIJdMZAr9o7xZmHpQVygMghGZ4= -github.com/daixiang0/gci v0.8.1/go.mod h1:EpVfrztufwVgQRXjnX4zuNinEpLj5OmMjtu/+MB0V0c= +github.com/daixiang0/gci v0.10.1 h1:eheNA3ljF6SxnPD/vE4lCBusVHmV3Rs3dkKvFrJ7MR0= +github.com/daixiang0/gci v0.10.1/go.mod h1:xtHP9N7AHdNvtRNfcx9gwTDfw7FRJx4bZUsiEfiNNAI= github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= -github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= -github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +github.com/danieljoos/wincred v1.2.1 h1:dl9cBrupW8+r5250DYkYxocLeZ1Y4vB1kxgtjxw8GQs= +github.com/danieljoos/wincred v1.2.1/go.mod h1:uGaFL9fDn3OLTvzCGulzE+SzjEe5NGlh5FdCcyfPwps= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/denis-tingaikin/go-header v0.4.3 h1:tEaZKAlqql6SKCY++utLmkPLd6K8IBM20Ha7UVm+mtU= github.com/denis-tingaikin/go-header v0.4.3/go.mod h1:0wOCWuN71D5qIgE2nz9KrKmuYBAC2Mra5RassOIQ2/c= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= @@ -423,26 +859,24 @@ github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= -github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= +github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= -github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQxaLAeM= -github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= +github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/emicklei/dot v1.6.1 h1:ujpDlBkkwgWUY+qPId5IwapRW/xEoligRSYjioR6DFI= +github.com/emicklei/dot v1.6.1/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -452,114 +886,122 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= +github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCwHLhwx1WguiVDV7pTG/tI= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= +github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= +github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= +github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/esimonov/ifshort v1.0.4 h1:6SID4yGWfRae/M7hkVDVVyppy8q/v9OuxNdmjLQStBA= github.com/esimonov/ifshort v1.0.4/go.mod h1:Pe8zjlRrJ80+q2CxHLfEOfTwxCZ4O+MuhcHcfgNWTk0= github.com/ettle/strcase v0.1.1 h1:htFueZyVeE1XNnMEfbqp5r67qAN/4r6ya1ysq8Q+Zcw= github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= -github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= -github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/firefart/nonamedreturns v1.0.4 h1:abzI1p7mAEPYuR4A+VLKn4eNDOycjYo2phmY9sfv40Y= github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= -github.com/getsentry/sentry-go v0.23.0 h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE= -github.com/getsentry/sentry-go v0.23.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= -github.com/go-critic/go-critic v0.6.5 h1:fDaR/5GWURljXwF8Eh31T2GZNz9X4jeboS912mWF8Uo= -github.com/go-critic/go-critic v0.6.5/go.mod h1:ezfP/Lh7MA6dBNn4c6ab5ALv3sKnZVLx37tr00uuaOY= +github.com/go-critic/go-critic v0.7.0 h1:tqbKzB8pqi0NsRZ+1pyU4aweAF7A7QN0Pi4Q02+rYnQ= +github.com/go-critic/go-critic v0.7.0/go.mod h1:moYzd7GdVXE2C2hYTwd7h0CPcqlUeclsyBRwMa38v64= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= +github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= +github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= -github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU= +github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4FKDg= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-toolsmith/astcast v1.0.0 h1:JojxlmI6STnFVG9yOImLeGREv8W2ocNUM+iOhR6jE7g= -github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= -github.com/go-toolsmith/astcopy v1.0.2 h1:YnWf5Rnh1hUudj11kei53kI57quN/VH6Hp1n+erozn0= -github.com/go-toolsmith/astcopy v1.0.2/go.mod h1:4TcEdbElGc9twQEYpVo/aieIXfHhiuLh4aLAck6dO7Y= -github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= -github.com/go-toolsmith/astequal v1.0.2/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= -github.com/go-toolsmith/astequal v1.0.3 h1:+LVdyRatFS+XO78SGV4I3TCEA0AC7fKEGma+fH+674o= +github.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8= +github.com/go-toolsmith/astcast v1.1.0/go.mod h1:qdcuFWeGGS2xX5bLM/c3U9lewg7+Zu4mr+xPwZIB4ZU= +github.com/go-toolsmith/astcopy v1.1.0 h1:YGwBN0WM+ekI/6SS6+52zLDEf8Yvp3n2seZITCUBt5s= +github.com/go-toolsmith/astcopy v1.1.0/go.mod h1:hXM6gan18VA1T/daUEHCFcYiW8Ai1tIwIzHY6srfEAw= github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= -github.com/go-toolsmith/astfmt v1.0.0 h1:A0vDDXt+vsvLEdbMFJAUBI/uTbRw1ffOPnxsILnFL6k= -github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw= -github.com/go-toolsmith/astp v1.0.0 h1:alXE75TXgcmupDsMK1fRAy0YUzLzqPVvBKoyWV+KPXg= -github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI= -github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5 h1:eD9POs68PHkwrx7hAB78z1cb6PfGq/jyWn3wJywsH1o= -github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5/go.mod h1:3NAwwmD4uY/yggRxoEjk/S00MIV3A+H7rrE3i87eYxM= -github.com/go-toolsmith/strparse v1.0.0 h1:Vcw78DnpCAKlM20kSbAyO4mPfJn/lyYA4BJUDxe2Jb4= +github.com/go-toolsmith/astequal v1.1.0 h1:kHKm1AWqClYn15R0K1KKE4RG614D46n+nqUQ06E1dTw= +github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ= +github.com/go-toolsmith/astfmt v1.1.0 h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco= +github.com/go-toolsmith/astfmt v1.1.0/go.mod h1:OrcLlRwu0CuiIBp/8b5PYF9ktGVZUjlNMV634mhwuQ4= +github.com/go-toolsmith/astp v1.1.0 h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA= +github.com/go-toolsmith/astp v1.1.0/go.mod h1:0T1xFGz9hicKs8Z5MfAqSUitoUYS30pDMsRVIDHs8CA= +github.com/go-toolsmith/pkgload v1.2.2 h1:0CtmHq/02QhxcF7E9N5LIFcYFsMR5rdovfqTtRKkgIk= +github.com/go-toolsmith/pkgload v1.2.2/go.mod h1:R2hxLNRKuAsiXCo2i5J6ZQPhnPMOVtU+f0arbFPWCus= github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= -github.com/go-toolsmith/typep v1.0.2 h1:8xdsa1+FSIH/RhEkgnD1j2CJOy5mNllW1Q9tRiYwvlk= -github.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= -github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b h1:khEcpUM4yFcxg4/FHQWkvVRmgijNXRfzkIDHh23ggEo= -github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= +github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw= +github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= +github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= +github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= +github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U= +github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -593,9 +1035,9 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -607,14 +1049,14 @@ github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6 github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 h1:amWTbTGqOZ71ruzrdA+Nx5WA3tV1N0goTspwmKCQvBY= github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2/go.mod h1:9wOXstvyDRshQ9LggQuzBCGysxs3b6Uo/1MvYCR2NMs= -github.com/golangci/golangci-lint v1.50.1 h1:C829clMcZXEORakZlwpk7M4iDw2XiwxxKaG504SZ9zY= -github.com/golangci/golangci-lint v1.50.1/go.mod h1:AQjHBopYS//oB8xs0y0M/dtxdKHkdhl0RvmjUct0/4w= +github.com/golangci/golangci-lint v1.52.0 h1:T7w3tuF1goz64qGV+ML4MgysSl/yUfA3UZJK92oE48A= +github.com/golangci/golangci-lint v1.52.0/go.mod h1:wlTh+d/oVlgZC2yCe6nlxrxNAnuhEQC0Zdygoh72Uak= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= -github.com/golangci/misspell v0.3.5 h1:pLzmVdl3VxTOncgzHcvLOKirdvcx/TydsClUQXTehjo= -github.com/golangci/misspell v0.3.5/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= +github.com/golangci/misspell v0.4.0 h1:KtVB/hTK4bbL/S6bs64rYyk8adjmh1BygbBiaAiX+a0= +github.com/golangci/misspell v0.4.0/go.mod h1:W6O/bwV6lGDxUCChm2ykw9NQdd5bYd1Xkjo88UcWyJc= github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 h1:DIPQnGy2Gv2FSA4B/hh8Q7xx3B7AIDk3DAMeHclH1vQ= github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6/go.mod h1:0AKcRCkMoKvUvlf89F6O7H2LYdhr1zBh736mBItOdRs= github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys= @@ -623,6 +1065,7 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -637,8 +1080,9 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= @@ -649,6 +1093,7 @@ github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIG github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -667,17 +1112,22 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= +github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM= +github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= +github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -687,30 +1137,26 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 h1:PVRE9d4AQKmbelZ7emNig1+NT27DUmKZn5qXxfio54U= -github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= -github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 h1:9alfqbrhuD+9fLZ4iaAVwhlp5PEhmnBt7yvK2Oy5C1U= +github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= -github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= -github.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw= +github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= -github.com/gostaticanalysis/comment v1.3.0/go.mod h1:xMicKDx7XRXYdVwY9f9wQpDJVnqWxw9wCauCMKp+IBI= github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= @@ -720,65 +1166,55 @@ github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3 github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.4.0 h1:nhdCmubdmDF6VEatUNjgUZBJKWRqugoISdUv3PPQgHY= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/gostaticanalysis/testutil v0.4.0/go.mod h1:bLIoPefWXrRi/ssLFWX1dx7Repi5x3CuviD3dgAZaBU= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= -github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= -github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= -github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= -github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= -github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.1 h1:SWiSWN/42qdpR0MdhaOc/bLR48PLuP1ZQtYLRlM69uY= -github.com/hashicorp/go-getter v1.7.1/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.3 h1:bN2+Fw9XPFvOCjB0UOevFIMICZ7G2XSQHzfvLUyOM5E= +github.com/hashicorp/go-getter v1.7.3/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-hclog v1.6.2 h1:NOtoftovWkDheyUM/8JW3QMiXyxJK3uHRK7wV04nD2I= +github.com/hashicorp/go-hclog v1.6.2/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE= +github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A= +github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hdevalence/ed25519consensus v0.1.0 h1:jtBwzzcHuTmFrQN6xQZn6CQEO/V9f7HsjsjeEZ6auqU= -github.com/hdevalence/ed25519consensus v0.1.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= +github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N3iBb1Tb4rdcU= +github.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -786,9 +1222,11 @@ github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3 github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA= -github.com/iancoleman/orderedmap v0.2.0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= +github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= +github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= @@ -796,61 +1234,57 @@ github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPt github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/jgautheron/goconst v1.5.1 h1:HxVbL1MhydKs8R8n/HE5NPvzfaYmQJA3o879lE4+WcM= github.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= -github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= +github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48= github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= -github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= +github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/junk1tm/musttag v0.5.0 h1:bV1DTdi38Hi4pG4OVWa7Kap0hi0o7EczuK6wQt9zPOM= +github.com/junk1tm/musttag v0.5.0/go.mod h1:PcR7BA+oREQYvHwgjIDmw3exJeds5JzRcvEJTfjrA0M= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/errcheck v1.6.2 h1:uGQ9xI8/pgc9iOoCe7kWQgRE6SBTrCGmTSf0LrEtY7c= -github.com/kisielk/errcheck v1.6.2/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw= +github.com/kisielk/errcheck v1.6.3 h1:dEKh+GLHcWm2oN34nMvDzn1sqI0i0WxPvrgiJA5JuM8= +github.com/kisielk/errcheck v1.6.3/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkHAIKE/contextcheck v1.1.3 h1:l4pNvrb8JSwRd51ojtcOxOeHJzHek+MtOyXbaR0uvmw= -github.com/kkHAIKE/contextcheck v1.1.3/go.mod h1:PG/cwd6c0705/LM0KTr1acO2gORUxkSVWyLJOFW5qoo= +github.com/kkHAIKE/contextcheck v1.1.4 h1:B6zAaLhOEEcjvUgIYEqystmnFk1Oemn8bvJhbt0GMb8= +github.com/kkHAIKE/contextcheck v1.1.4/go.mod h1:1+i/gWqokIa+dm31mqGLZhZJ7Uh44DJGZVmr6QRBNJg= +github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= -github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= +github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -861,28 +1295,26 @@ github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= github.com/kunwardeep/paralleltest v1.0.6 h1:FCKYMF1OF2+RveWlABsdnmsvJrei5aoyZoaGS+Ugg8g= github.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes= -github.com/kyoh86/exportloopref v0.1.8 h1:5Ry/at+eFdkX9Vsdw3qU4YkvGtzuVfzT4X7S77LoN/M= -github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg= +github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= +github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= github.com/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA= github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= -github.com/ldez/tagliatelle v0.3.1 h1:3BqVVlReVUZwafJUwQ+oxbx2BEX2vUG4Yu/NOfMiKiM= -github.com/ldez/tagliatelle v0.3.1/go.mod h1:8s6WJQwEYHbKZDsp/LjArytKOG8qaMrKQQ3mFukHs88= +github.com/ldez/tagliatelle v0.4.0 h1:sylp7d9kh6AdXN2DpVGHBRb5guTVAgOxqNGhbqc4b1c= +github.com/ldez/tagliatelle v0.4.0/go.mod h1:mNtTfrHy2haaBAw+VT7IBV6VXBThS7TCreYWbBcJ87I= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/leonklingele/grouper v1.1.0 h1:tC2y/ygPbMFSBOs3DcyaEMKnnwH7eYKzohOtRrf0SAg= -github.com/leonklingele/grouper v1.1.0/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/leonklingele/grouper v1.1.1 h1:suWXRU57D4/Enn6pXR0QVqqWWrnJ9Osrz+5rjt8ivzU= +github.com/leonklingele/grouper v1.1.1/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linxGnu/grocksdb v1.7.16 h1:Q2co1xrpdkr5Hx3Fp+f+f7fRGhQFQhvi/+226dtLmA8= -github.com/linxGnu/grocksdb v1.7.16/go.mod h1:JkS7pl5qWpGpuVb3bPqTz8nC12X3YtPZT+Xq7+QfQo4= +github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= +github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM= github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= @@ -890,10 +1322,10 @@ github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYt github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= -github.com/maratori/testpackage v1.1.0 h1:GJY4wlzQhuBusMF1oahQCBtUV/AQ/k69IZ68vxaac2Q= -github.com/maratori/testpackage v1.1.0/go.mod h1:PeAhzU8qkCwdGEMTEupsHJNlQu2gZopMC6RjbhmHeDc= -github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 h1:pWxk9e//NbPwfxat7RXkts09K+dEBJWakUWwICVqYbA= -github.com/matoous/godox v0.0.0-20210227103229-6504466cf951/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= +github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc= +github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 h1:gWg6ZQ4JhDfJPqlo2srm/LN17lpybq15AryXIRcWYLE= +github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -901,241 +1333,194 @@ github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo= github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= -github.com/mgechev/revive v1.2.4 h1:+2Hd/S8oO2H0Ikq2+egtNwQsVhAeELHjxjIUFX5ajLI= -github.com/mgechev/revive v1.2.4/go.mod h1:iAWlQishqCuj4yhV24FTnKSXGpbAA+0SckXB8GQMX/Q= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= -github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/mgechev/revive v1.3.1 h1:OlQkcH40IB2cGuprTPcjB0iIUddgVZgGmDX3IAMR8D4= +github.com/mgechev/revive v1.3.1/go.mod h1:YlD6TTWl2B8A103R9KWJSPVI9DrEf+oqr15q21Ld+5I= +github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= +github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/moricho/tparallel v0.2.1 h1:95FytivzT6rYzdJLdtfn6m1bfFJylOJK41+lgv/EHf4= -github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k= +github.com/moricho/tparallel v0.3.0 h1:8dDx3S3e+jA+xiQXC7O3dvfRTe/J+FYlTDDW01Y7z/Q= +github.com/moricho/tparallel v0.3.0/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 h1:4kuARK6Y6FxaNu/BnU2OAaLF86eTVhP2hjTB6iMvItA= github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJerMDfblTH7p5MZaTt+8zaT2iEk3AkVb9PQdZuE8= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nishanths/exhaustive v0.8.3 h1:pw5O09vwg8ZaditDp/nQRqVnrMczSJDxRDJMowvhsrM= -github.com/nishanths/exhaustive v0.8.3/go.mod h1:qj+zJJUgJ76tR92+25+03oYUhzF4R7/2Wk7fGTfCHmg= +github.com/nishanths/exhaustive v0.9.5 h1:TzssWan6orBiLYVqewCG8faud9qlFntJE30ACpzmGME= +github.com/nishanths/exhaustive v0.9.5/go.mod h1:IbwrGdVMizvDcIxPYGVdQn5BqWJaOwpCvg4RGb8r/TA= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= -github.com/notional-labs/alliance v1.0.1-0.20231106184124-5cc1ff759647 h1:vCSokMIO60u0td51l7NB+pikUChJozIwIb4u8UeqTKI= -github.com/notional-labs/alliance v1.0.1-0.20231106184124-5cc1ff759647/go.mod h1:GFQ8TsXDMTpu7kif0Dwddz6rxazy0ZJQHfN38ZmAodI= +github.com/notional-labs/cosmos-sdk v0.50.5-patch-validators-trim-tag h1:lnMn2O2zjUvLbWJuKY3yXtrkVzCXQ7r1/oS/tgCsyjU= +github.com/notional-labs/cosmos-sdk v0.50.5-patch-validators-trim-tag/go.mod h1:oV/k6GJgXV9QPoM2fsYDPPsyPBgQbdotv532O6Mz1OQ= +github.com/notional-labs/ibc-apps/middleware/packet-forward-middleware/v8 v8.0.0-20240508031447-347412725653 h1:P7Chh5O10Jtv+vvfaVpG72fv5LKVWQLEtCKQrMtbBdw= +github.com/notional-labs/ibc-apps/middleware/packet-forward-middleware/v8 v8.0.0-20240508031447-347412725653/go.mod h1:NS+Ooc0vOyr1mAgAbt/HS8Dpes2dV7/YgOc+WxD63O4= +github.com/notional-labs/ibc-go/modules/light-clients/08-wasm v0.0.0-20240522081622-85c49c80dc29 h1:h+EVIIwTI9iBtUhgBay5dJs+bUCnTHDOaXT0uujm6Zs= +github.com/notional-labs/ibc-go/modules/light-clients/08-wasm v0.0.0-20240522081622-85c49c80dc29/go.mod h1:u2FXNcSxzzn5IwjWBA51HKMwiYMRK6/G35VmSJULhP0= +github.com/notional-labs/ibc-go/v8 v8.0.0-alpha.1.0.20240515181700-c058e14324e8 h1:RkivXDi3NoRZEjdbO0ueSykCnb7FPaBR0F8sWn5DlFM= +github.com/notional-labs/ibc-go/v8 v8.0.0-alpha.1.0.20240515181700-c058e14324e8/go.mod h1:x024D7fnWnTL6wNeoHbe0+JSjDaoQ3CNvJY8o9F4imE= +github.com/nunnatsa/ginkgolinter v0.9.0 h1:Sm0zX5QfjJzkeCjEp+t6d3Ha0jwvoDjleP9XCsrEzOA= +github.com/nunnatsa/ginkgolinter v0.9.0/go.mod h1:FHaMLURXP7qImeH6bvxWJUpyH+2tuqe5j4rW1gxJRmI= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= -github.com/onsi/ginkgo/v2 v2.1.4 h1:GNapqRSid3zijZ9H77KrgVG4/8KqiyRsxcSxe+7ApXY= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo/v2 v2.8.0 h1:pAM+oBNPrpXRs+E/8spkeGx9QgekbRVyr74EUvRVOUI= +github.com/onsi/ginkgo/v2 v2.8.0/go.mod h1:6JsQiECmxCa3V5st74AL/AmsV482EDdVrGaVW6z3oYU= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q= +github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= +github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= +github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= github.com/otiai10/copy v1.2.0 h1:HvG945u96iNadPoG2/Ja2+AUJeW5YuFQMixq9yirC+k= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= -github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/pelletier/go-toml/v2 v2.2.0 h1:QLgLl2yMN7N+ruc31VynXs1vhMZa7CeHHejIeBAsoHo= +github.com/pelletier/go-toml/v2 v2.2.0/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= -github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= -github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d h1:CdDQnGF8Nq9ocOS/xlSptM1N3BbrA6/kmaep5ggwaIA= -github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 h1:jik8PHtAIsPlCRJjJzl4udgEf7hawInF9texMeO2jrU= +github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= +github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polyfloyd/go-errorlint v1.0.5 h1:AHB5JRCjlmelh9RrLxT9sgzpalIwwq4hqE8EkwIwKdY= -github.com/polyfloyd/go-errorlint v1.0.5/go.mod h1:APVvOesVSAnne5SClsPxPdfvZTVDojXh1/G3qb5wjGI= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.15.0 h1:5fCgGYogn0hFdhyhLbw7hEsWxufKtY9klyvdNfFlFhM= -github.com/prometheus/client_golang v1.15.0/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/polyfloyd/go-errorlint v1.4.5 h1:70YWmMy4FgRHehGNOUask3HtSFSOLKgmDn7ryNe7LqI= +github.com/polyfloyd/go-errorlint v1.4.5/go.mod h1:sIZEbFoDOCnTYYZoVkjc4hTnM459tuWA9H/EkdXwsKk= +github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= +github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= +github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= -github.com/quasilyte/go-ruleguard v0.3.1-0.20210203134552-1b5a410e1cc8/go.mod h1:KsAh3x0e7Fkpgs+Q9pNLS5XpFSvYCEVl5gP9Pp1xp30= -github.com/quasilyte/go-ruleguard v0.3.18 h1:sd+abO1PEI9fkYennwzHn9kl3nqP6M5vE7FiOzZ+5CE= -github.com/quasilyte/go-ruleguard v0.3.18/go.mod h1:lOIzcYlgxrQ2sGJ735EHXmf/e9MJ516j16K/Ifcttvs= -github.com/quasilyte/go-ruleguard/dsl v0.3.0/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= -github.com/quasilyte/go-ruleguard/dsl v0.3.21/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= -github.com/quasilyte/go-ruleguard/rules v0.0.0-20201231183845-9e62ed36efe1/go.mod h1:7JTjp89EGyU1d6XfBiXihJNG37wB2VRkd125Q1u7Plc= -github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= -github.com/quasilyte/gogrep v0.0.0-20220828223005-86e4605de09f h1:6Gtn2i04RD0gVyYf2/IUMTIs+qYleBt4zxDqkLTcu4U= -github.com/quasilyte/gogrep v0.0.0-20220828223005-86e4605de09f/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= -github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 h1:L8QM9bvf68pVdQ3bCFZMDmnt9yqcMBro1pC7F+IPYMY= -github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= +github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= +github.com/quasilyte/go-ruleguard v0.4.0 h1:DyM6r+TKL+xbKB4Nm7Afd1IQh9kEUKQs2pboWGKtvQo= +github.com/quasilyte/go-ruleguard v0.4.0/go.mod h1:Eu76Z/R8IXtViWUIHkE3p8gdH3/PKk1eh3YGfaEof10= +github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= +github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= +github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl980XxGFEZSS6KlBGIV0diGdySzxATTWoqaU= +github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= -github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= -github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= -github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= +github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.30.0 h1:SymVODrcRsaRaSInD9yQtKbtWqwsfoPcRff/oRXLj4c= -github.com/rs/zerolog v1.30.0/go.mod h1:/tk+P47gFdPXq4QYjvCmT5/Gsug2nagsFWBWhAiSi1w= +github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= +github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/rust-ninja/cosmos-sdk v0.47.5-patch-validators-trim-tag h1:hRig0sGiufr4UszAaCZlg0ZJVGBjYyIQwC+NUf2f/GE= -github.com/rust-ninja/cosmos-sdk v0.47.5-patch-validators-trim-tag/go.mod h1:EHwCeN9IXonsjKcjpS12MqeStdZvIdxt3VYXhus3G3c= -github.com/ryancurrah/gomodguard v1.2.4 h1:CpMSDKan0LtNGGhPrvupAoLeObRFjND8/tU1rEOtBp4= -github.com/ryancurrah/gomodguard v1.2.4/go.mod h1:+Kem4VjWwvFpUJRJSwa16s1tBJe+vbv02+naTow2f6M= -github.com/ryanrolds/sqlclosecheck v0.3.0 h1:AZx+Bixh8zdUBxUA1NxbxVAS78vTPq4rCb8OUZI9xFw= -github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sanposhiho/wastedassign/v2 v2.0.6 h1:+6/hQIHKNJAUixEj6EmOngGIisyeI+T3335lYTyxRoA= -github.com/sanposhiho/wastedassign/v2 v2.0.6/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= +github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= +github.com/ryancurrah/gomodguard v1.3.0 h1:q15RT/pd6UggBXVBuLps8BXRvl5GPBcwVA7BJHMLuTw= +github.com/ryancurrah/gomodguard v1.3.0/go.mod h1:ggBxb3luypPEzqVtq33ee7YSN35V28XeGnid8dnni50= +github.com/ryanrolds/sqlclosecheck v0.4.0 h1:i8SX60Rppc1wRuyQjMciLqIzV3xnoHB7/tXbr6RGYNI= +github.com/ryanrolds/sqlclosecheck v0.4.0/go.mod h1:TBRRjzL31JONc9i4XMinicuo+s+E8yKZ5FN8X3G6CKQ= +github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc= +github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= -github.com/sashamelentyev/usestdlibvars v1.20.0 h1:K6CXjqqtSYSsuyRDDC7Sjn6vTMLiSJa4ZmDkiokoqtw= -github.com/sashamelentyev/usestdlibvars v1.20.0/go.mod h1:0GaP+ecfZMXShS0A94CJn6aEuPRILv8h/VuWI9n1ygg= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/securego/gosec/v2 v2.13.1 h1:7mU32qn2dyC81MH9L2kefnQyRMUarfDER3iQyMHcjYM= -github.com/securego/gosec/v2 v2.13.1/go.mod h1:EO1sImBMBWFjOTFzMWfTRrZW6M15gm60ljzrmy/wtHo= +github.com/sashamelentyev/usestdlibvars v1.23.0 h1:01h+/2Kd+NblNItNeux0veSL5cBF1jbEOPrEhDzGYq0= +github.com/sashamelentyev/usestdlibvars v1.23.0/go.mod h1:YPwr/Y1LATzHI93CqoPUN/2BzGQ/6N/cl/KwgR0B/aU= +github.com/securego/gosec/v2 v2.15.0 h1:v4Ym7FF58/jlykYmmhZ7mTm7FQvN/setNm++0fgIAtw= +github.com/securego/gosec/v2 v2.15.0/go.mod h1:VOjTrZOkUtSDt2QLSJmQBMWnvwiQPEjg0l+5juIqGk8= github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= @@ -1143,54 +1528,47 @@ github.com/sivchari/containedctx v1.0.2 h1:0hLQKpgC53OVF1VT7CeoFHk9YKstur1XOgfYI github.com/sivchari/containedctx v1.0.2/go.mod h1:PwZOeqm4/DLoJOqMSIJs3aKqXRX4YO+uXww087KZ7Bw= github.com/sivchari/nosnakecase v1.7.0 h1:7QkpWIRMe8x25gckkFd2A5Pi6Ymo0qgr4JrhGt95do8= github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= -github.com/sivchari/tenv v1.7.0 h1:d4laZMBK6jpe5PWepxlV9S+LC0yXqvYHiq8E6ceoVVE= -github.com/sivchari/tenv v1.7.0/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sonatard/noctx v0.0.1 h1:VC1Qhl6Oxx9vvWo3UDgrGXYCeKCe3Wbw7qAWL6FrmTY= -github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/sourcegraph/go-diff v0.6.1 h1:hmA1LzxW0n1c3Q4YbrFgg4P99GSnebYa3x8gr0HZqLQ= -github.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= +github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak= +github.com/sivchari/tenv v1.7.1/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= +github.com/sonatard/noctx v0.0.2 h1:L7Dz4De2zDQhW8S0t+KUjY0MAQJd6SgVwhzNIc4ok00= +github.com/sonatard/noctx v0.0.2/go.mod h1:kzFz+CzWSjQ2OzIm46uJZoXuBpa2+0y3T36U18dWqIo= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= +github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= -github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= -github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= -github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= +github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= +github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc= github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I= -github.com/strangelove-ventures/async-icq/v7 v7.0.0-20230413165143-a3b65ccdc897 h1:lCTD5L1v1K1KC6KXjyt4o1X+yzV14RbbrPZaF29n8uI= -github.com/strangelove-ventures/async-icq/v7 v7.0.0-20230413165143-a3b65ccdc897/go.mod h1:ag05Q54Wkr0jVwfe+14sxnuWbw0gBOxtPQv9afBBnr0= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -1199,17 +1577,21 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= -github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/tdakkota/asciicheck v0.1.1 h1:PKzG7JUTUmVspQTDqtkX9eSiLGossXTybutHwTXuO0A= -github.com/tdakkota/asciicheck v0.1.1/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= +github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c h1:+aPplBwWcHBo6q9xrfWdMrT9o4kltkmmvpemgIjep/8= +github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c/go.mod h1:SbErYREK7xXdsRiigaQiQkI9McGRzYMvlKYaP3Nimdk= +github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM= +github.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= @@ -1218,23 +1600,20 @@ github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpR github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= github.com/tetafro/godot v1.4.11 h1:BVoBIqAf/2QdbFmSwAWnaIqDivZdOV0ZRwEm6jivLKw= github.com/tetafro/godot v1.4.11/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8= -github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg= -github.com/tidwall/btree v1.6.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 h1:kl4KhGNsJIbDHS9/4U9yQo1UcPQM0kOMJHn29EoH/Ro= -github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= -github.com/timonwong/loggercheck v0.9.3 h1:ecACo9fNiHxX4/Bc02rW2+kaJIAMAes7qJ7JKxt0EZI= -github.com/timonwong/loggercheck v0.9.3/go.mod h1:wUqnk9yAOIKtGA39l1KLE9Iz0QiTocu/YZoOf+OzFdw= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tomarrell/wrapcheck/v2 v2.7.0 h1:J/F8DbSKJC83bAvC6FoZaRjZiZ/iKoueSdrEkmGeacA= -github.com/tomarrell/wrapcheck/v2 v2.7.0/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg= +github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= +github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= +github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e h1:MV6KaVu/hzByHP0UvJ4HcMGE/8a6A4Rggc/0wx2AvJo= +github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= +github.com/timonwong/loggercheck v0.9.4 h1:HKKhqrjcVj8sxL7K77beXh0adEm6DLjV/QOGeMXEVi4= +github.com/timonwong/loggercheck v0.9.4/go.mod h1:caz4zlPcgvpEkXgVnAJGowHAMW2NwHaNlpS8xDbVhTg= +github.com/tomarrell/wrapcheck/v2 v2.8.1 h1:HxSqDSN0sAt0yJYsrcYVoEeyM4aI9yAm3KQpIXDJRhQ= +github.com/tomarrell/wrapcheck/v2 v2.8.1/go.mod h1:/n2Q3NZ4XFT50ho6Hbxg+RV1uyo2Uow/Vdm9NQcl5SE= github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= @@ -1242,11 +1621,9 @@ github.com/ultraware/funlen v0.0.3 h1:5ylVWm8wsNwH5aWo9438pwvsK0QiqVuUrt9bn7S/iL github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= github.com/ultraware/whitespace v0.0.5 h1:hh+/cpIcopyMYbZNVov9iSxvJU3OYQg78Sfaqzi/CzI= github.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/uudashr/gocognit v1.0.6 h1:2Cgi6MweCsdB6kpcVQp7EW4U23iBFQWfTXiWlyp842Y= github.com/uudashr/gocognit v1.0.6/go.mod h1:nAIUuVBnYU7pcninia3BHOvQkpQCeO76Uscky5BOwcY= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= @@ -1259,18 +1636,16 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= gitlab.com/bosi/decorder v0.2.3 h1:gX4/RgK16ijY8V+BRQHAySfQAb354T7/xQpDB2n10P0= gitlab.com/bosi/decorder v0.2.3/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzChSdGE= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= -go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.etcd.io/bbolt v1.3.9 h1:8x7aARPEXiXbHmtUwAIv7eV2fQFHrLLavdiJ3uzJXoI= +go.etcd.io/bbolt v1.3.9/go.mod h1:zaO32+Ti0PK1ivdPtgMESzuzL2VPoIG1PCQNvOdo/dE= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -1280,45 +1655,67 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= +go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= +go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= +go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= +go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= +go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= +go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= +go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= -go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= +go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= -go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= -go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= @@ -1326,13 +1723,26 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb h1:xIApU0ow1zwMa2uL1VDNeQlNVFTWMQxZUZCMDy0Q4Us= -golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= +golang.org/x/exp v0.0.0-20240314144324-c7f7c6466f7f h1:3CW0unweImhOzd5FmYuRsD4Y4oQFKZIjAnKbjV4WIrw= +golang.org/x/exp v0.0.0-20240314144324-c7f7c6466f7f/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20220827204233-334a2380cb91 h1:Ic/qN6TEifvObMGQy72k0n1LlJr7DjWWEi+MOsDOiSk= -golang.org/x/exp/typeparams v0.0.0-20220827204233-334a2380cb91/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20230307190834-24139beb5833 h1:jWGQJV4niP+CCmFW9ekjA9Zx8vYORzOUH2/Nl5WPuLQ= +golang.org/x/exp/typeparams v0.0.0-20230307190834-24139beb5833/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1356,31 +1766,29 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= -golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1408,8 +1816,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -1422,10 +1830,23 @@ golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= -golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1449,10 +1870,18 @@ golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7Lm golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= +golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= +golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= +golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= +golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= +golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1466,16 +1895,15 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1490,14 +1918,12 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1515,8 +1941,6 @@ golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1528,6 +1952,7 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1536,23 +1961,23 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1571,17 +1996,37 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1593,27 +2038,31 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190307163923-6a08e3108db3/go.mod h1:25r3+/G6/xytQM8iWZKq3Hn0kr0rgFKPUNVEL/dr3z4= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -1623,10 +2072,8 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190916130336-e45ffcd953cc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1635,9 +2082,7 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117220505-0cba7a3a9ee9/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1650,30 +2095,23 @@ golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjs golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200414032229-332987a829c3/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200622203043-20e05c1c8ffa/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200624225443-88f3c62a19ff/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200625211823-6506e20df31f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200812195022-5ae4c3c160a0/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200831203904-5a2aa26beb65/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201002184944-ecd9fd270d5d/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201230224404-63754364767c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1685,13 +2123,18 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.9-0.20211228192929-ee1ca4ffc4da/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= +golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1701,7 +2144,14 @@ golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNq golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= +gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= +gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -1749,25 +2199,37 @@ google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaE google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.126.0 h1:q4GJq+cAdMAC7XP7njvQ4tvohGLiSlytuL4BQxbIZ+o= +google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= +google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= +google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= +google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= +google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= +google.golang.org/api v0.118.0/go.mod h1:76TtD3vkgmZ66zZzp72bUUklpmQmKlhh6sYtIjYK+5E= +google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= +google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= +google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= +google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -1783,6 +2245,7 @@ google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -1836,6 +2299,7 @@ google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2 google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= @@ -1868,22 +2332,58 @@ google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53B google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 h1:Au6te5hbKUV8pIYWHqOUZ1pva5qK/rwbIhoXEUB9Lu8= -google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:O9kGHb51iE/nOGvQaDUuadVYqovW56s5emA88lQnj6Y= -google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529 h1:s5YSX+ZH5b5vS9rnpGymvIyMpLRJizowqDlOuyjXnTk= -google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= +google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= +google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= +google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY= +google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= +google.golang.org/genproto v0.0.0-20240221002015-b0ce06bbee7c h1:Zmyn5CV/jxzKnF+3d+xzbomACPwLQqVpLTpyXN5uTaQ= +google.golang.org/genproto v0.0.0-20240221002015-b0ce06bbee7c/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20240221002015-b0ce06bbee7c h1:9g7erC9qu44ks7UK4gDNlnk4kOxZG707xKm4jVniy6o= +google.golang.org/genproto/googleapis/api v0.0.0-20240221002015-b0ce06bbee7c/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c h1:NUsgEN92SQQqzfA+YtqYNqYmB3DMMYLlIwUZAQFVFbo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -1907,6 +2407,7 @@ google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= @@ -1916,8 +2417,13 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.56.2 h1:fVRFRnXvU+x6C4IlHZewvJOVHoOv1TUuQyoRsYnB4bI= -google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= +google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= +google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1934,32 +2440,29 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= @@ -1968,9 +2471,8 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY= -gotest.tools/v3 v3.5.0/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= +gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1978,24 +2480,59 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.3.3 h1:oDx7VAwstgpYpb3wv0oxiZlxY+foCpRAwY7Vk6XpAgA= -honnef.co/go/tools v0.3.3/go.mod h1:jzwdWgg7Jdq75wlfblQxO4neNaFFSvgc1tD5Wv8U0Yw= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +honnef.co/go/tools v0.4.3 h1:o/n5/K5gXqk8Gozvs2cnL0F2S1/g1vcGCAx2vETjITw= +honnef.co/go/tools v0.4.3/go.mod h1:36ZgoUOrqOk1GxwHhyryEkq8FQWkUO2xGuSMhUCcdvA= +lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= +modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= +modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= +modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= +modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= +modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= +modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= +modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= +modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= +modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= +modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= +modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= +modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= +modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= mvdan.cc/gofumpt v0.4.0 h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM= mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= -mvdan.cc/unparam v0.0.0-20220706161116-678bad134442 h1:seuXWbRB1qPrS3NQnHmFKLJLtskWyueeIzmLXghMGgk= -mvdan.cc/unparam v0.0.0-20220706161116-678bad134442/go.mod h1:F/Cxw/6mVrNKqrR2YjFf5CaW0Bw4RL8RfbEf4GRggJk= -nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= +mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d h1:3rvTIIM22r9pvXk+q3swxUQAQOxksVMGK7sml4nG57w= +mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d/go.mod h1:IeHQjmn6TOD+e4Z3RFiZMMsLVL+A96Nvptar8Fj71is= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA= -pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +nhooyr.io/websocket v1.8.10 h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q= +nhooyr.io/websocket v1.8.10/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= +pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= +pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/kien-note.md b/kien-note.md new file mode 100644 index 000000000..417d221b3 --- /dev/null +++ b/kien-note.md @@ -0,0 +1,57 @@ +# Running the test + +## How did i build the `hyperspace` and `cw-grandpa` binaries +Go to the `ComposableFi/composable-ibc`, and building it in the master branch + +https://github.com/ComposableFi/composable-ibc/tree/master/hyperspace + +## How to reproduce the case + +1. Build the `picad` binary +```bash +make install +``` + +2. Run the localnet pica with `wasmClient` deployed +```bash +make localnet-pica +``` + +3. Run the localnet picasso +```bash +make localnet-picasso` +``` + +4. Run create clients +```bash +make relayer-create-clients +``` + + +# Current issue +## Client State decode into 08-wasm +`6981` +### Logging msg at ValidateBasic on cosmos side on v47 +add this log at ValidateBasic() function, at modules/core/02-client/types/msgs/go + +```go +fmt.Printf("msg.ClientState : %v\n", msg.ClientState) +clientState, err := UnpackClientState(msg.ClientState) +if err != nil { + return err +} +``` + +then, i get this value, basically, it says the clientState constructed from hyperspace is `08-wasm` + +``` +msg.ClientState : &Any{TypeUrl:/ibc.lightclients.wasm.v1.ClientState,Value:[10 204 1 10 40 47 105 98 99 46 108 105 103 104 116 99 108 105 101 110 116 115 46 103 114 97 110 100 112 97 46 118 49 46 67 108 105 101 110 116 83 116 97 116 101 18 159 1 10 32 146 240 69 84 49 1 104 67 240 92 67 123 199 101 70 152 115 0 205 47 91 76 8 16 108 92 254 197 173 59 35 206 16 67 24 5 40 2 48 167 16 56 20 66 36 10 32 199 203 131 204 79 173 68 214 92 44 140 240 46 150 66 83 144 154 219 206 75 174 118 245 90 177 194 134 163 255 44 194 16 1 66 36 10 32 20 164 40 156 190 217 24 43 102 84 102 53 144 50 192 109 195 183 142 183 238 104 52 237 95 167 180 159 149 51 85 167 16 1 66 36 10 32 184 160 36 189 114 208 123 150 110 8 135 7 155 93 135 60 197 160 19 53 186 39 222 219 43 141 20 36 169 95 136 128 16 1 18 32 157 80 86 242 181 81 33 48 148 160 59 120 141 184 2 116 68 81 117 186 231 140 143 237 227 139 242 90 45 220 132 188 26 5 8 167 16 16 20],XXX_unrecognized:[]} +``` + + +### Logging it at v50 + +`hyperspace` + +``` +msg.ClientState : &Any{TypeUrl:/ibc.lightclients.grandpa.v1.ClientState,Value:[10 32 106 46 120 116 154 178 37 115 118 3 65 47 241 205 37 168 10 129 250 125 20 121 236 81 77 119 185 185 155 72 122 11 16 17 40 2 48 167 16 56 1 66 36 10 32 199 203 131 204 79 173 68 214 92 44 140 240 46 150 66 83 144 154 219 206 75 174 118 245 90 177 194 134 163 255 44 194 16 1 66 36 10 32 20 164 40 156 190 217 24 43 102 84 102 53 144 50 192 109 195 183 142 183 238 104 52 237 95 167 180 159 149 51 85 167 16 1 66 36 10 32 184 160 36 189 114 208 123 150 110 8 135 7 155 93 135 60 197 160 19 53 186 39 222 219 43 141 20 36 169 95 136 128 16 1 66 36 10 32 140 4 179 243 122 62 235 12 208 118 154 107 153 87 196 106 60 118 44 155 224 91 89 26 250 8 121 224 61 159 194 212 16 1],XXX_unrecognized:[]} diff --git a/proto/composable/mint/v1beta1/mint.proto b/proto/composable/mint/v1beta1/mint.proto index 56971fdeb..cbe15b46d 100644 --- a/proto/composable/mint/v1beta1/mint.proto +++ b/proto/composable/mint/v1beta1/mint.proto @@ -11,13 +11,13 @@ message Minter { // current annual inflation rate string inflation = 1 [ (cosmos_proto.scalar) = "cosmos.Dec", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; // current annual expected provisions string annual_provisions = 2 [ (cosmos_proto.scalar) = "cosmos.Dec", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; } @@ -31,13 +31,13 @@ message Params { // maximum annual change in inflation rate string inflation_rate_change = 2 [ (cosmos_proto.scalar) = "cosmos.Dec", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; // goal of percent bonded atoms string goal_bonded = 3 [ (cosmos_proto.scalar) = "cosmos.Dec", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; // expected blocks per year @@ -45,13 +45,13 @@ message Params { // expected max amount of token to be distribute per year string max_token_per_year = 6 [ (cosmos_proto.scalar) = "cosmos.Int", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; // expected mint amount of token to be distribute per year string min_token_per_year = 7 [ (cosmos_proto.scalar) = "cosmos.Dec", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; } diff --git a/proto/composable/mint/v1beta1/query.proto b/proto/composable/mint/v1beta1/query.proto index 772e4404b..722ee88ad 100644 --- a/proto/composable/mint/v1beta1/query.proto +++ b/proto/composable/mint/v1beta1/query.proto @@ -43,7 +43,7 @@ message QueryInflationRequest {} message QueryInflationResponse { // inflation is the current minting inflation value. bytes inflation = 1 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; } @@ -57,7 +57,7 @@ message QueryAnnualProvisionsRequest {} message QueryAnnualProvisionsResponse { // annual_provisions is the current minting annual provisions value. bytes annual_provisions = 1 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; } diff --git a/proto/composable/ratelimit/v1beta1/ratelimit.proto b/proto/composable/ratelimit/v1beta1/ratelimit.proto index f5bc45035..b0d16ea7b 100644 --- a/proto/composable/ratelimit/v1beta1/ratelimit.proto +++ b/proto/composable/ratelimit/v1beta1/ratelimit.proto @@ -19,11 +19,11 @@ message Path { message Quota { string max_percent_send = 1 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; string max_percent_recv = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; uint64 duration_hours = 3; @@ -31,15 +31,15 @@ message Quota { message Flow { string inflow = 1 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; string outflow = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; string channel_value = 3 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; } @@ -49,7 +49,7 @@ message RateLimit { Quota quota = 2; Flow flow = 3; string min_rate_limit_amount = 4 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; } diff --git a/proto/composable/ratelimit/v1beta1/tx.proto b/proto/composable/ratelimit/v1beta1/tx.proto index 6f067b3c6..c79c2fcc6 100644 --- a/proto/composable/ratelimit/v1beta1/tx.proto +++ b/proto/composable/ratelimit/v1beta1/tx.proto @@ -29,19 +29,19 @@ message MsgAddRateLimit { string channel_id = 3 [ (gogoproto.customname) = "ChannelID" ]; // Max rate limit send string max_percent_send = 4 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; // Max rate limit receive string max_percent_recv = 5 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; // Duration of rate limit. The rate limit will reset when reach the duration. uint64 duration_hours = 6; // Min amount of rate limit (allow transfer max(min-amout, rate-limit)) string min_rate_limit_amount = 7 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; } @@ -57,15 +57,15 @@ message MsgUpdateRateLimit { string denom = 2; string channel_id = 3 [ (gogoproto.customname) = "ChannelID" ]; string max_percent_send = 4 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; string max_percent_recv = 5 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; string min_rate_limit_amount = 6 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; uint64 duration_hours = 7; diff --git a/scripts/08-wasm/ics10_grandpa_cw.wasm.json b/scripts/08-wasm/ics10_grandpa_cw.wasm.json index 1d1e12122..a176ef898 100644 --- a/scripts/08-wasm/ics10_grandpa_cw.wasm.json +++ b/scripts/08-wasm/ics10_grandpa_cw.wasm.json @@ -1 +1,13 @@ -{"deposit":"5000000000000000ppica","messages":[{"@type":"/ibc.lightclients.wasm.v1.MsgPushNewWasmCode","code":"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9lSq5snmx677gat+4n04rL7CVZffMej6t9rpu6fMmHXo4646ZPr193/5wYQ6Jj3lN8dc6anbm945deyDxKMfu9O888cl1cObbv/GySqp3txvyajd56bUgtofHnfvwUn1pWF/+cOVtybU80/8/YIJtyXV+j6nvPavlpQafsARJ935Q0c5x+/2vcOPd9XZN+ySXjnVUv1+c0vvo3raav4P5lx2zmhLvfKdb6zrS/Nx8PfPuDPxa0etdp556MSMUq8vTw7fbi9X3fTjD/50wf00X1f1/P2HvTz1zGHFzWcPSaq37r78/qOn5dRvzuix6Rt/ctSvVg/f+weET4Pddr1zEOH1H2z+0s96varU/of+eYdbT7XVq/c8Merju5Va0qF+dc7VSr162d0j+r1hq7+f/Y766CvEm1z2wont9yh17i0/efrg1xw1uKb/wMX03nZH/WVMekRK/ea1gxdNvT2jZqzIfLxhl6R6peGRmYkfJNTvr5mwdufBGXX3+4N+s+dZnjq9ddW/Xl2VUD+pPecvX36T+JzfZq6o2NdRO7bu+5XWeUnVuPSb86/czlNfX3TFgouJND9wwpjT1xEee2nvNx/e9RDCmxefPqOm1lP33HjO62demKUNt/TGGxpS6tCqPb702i5p1XT2macFBP9P77XfQzdWpNQz627+W//HbPVy8+n/mEn7/col95+yh+uqfzw14dv1IxJq6UPv3PijGqWufXK0av+XpRZX3TegzlPqyk0DPphETMoe+7+ZHzPWVvVj77/vtYytrmy/oN9z33XUV5ae8/zV9+TUW5X1z5x1t6deGvv4VyvfSqnrNtYOu2464c1j7D8f8DLR4+7uF377Q0+9/vq6tuHzPLX0N7cMWrnSUickxj9UdyHhufwHPz55qK2e+NIJH960hPblnXedef4dRPve8OqFR/lIKPyfn14wzVNzzpmzh/uOp94PJt940/dS6ruL//Hgyd9Kq/HBry8d+du06rjz4DUfP0vnxS637PDLmzz1VvF7rx9A8DXo97vtcOlPHdW+cvrTR33gqW+9+p+9552VVE2n3DHyXwMdlTjo7XEn0zwvCp497dgLHDX9iv8kdypYxKvs9b0vVyXVxBnLbzl5fEKtH3DyTdUDKtQOzz5dvW5oWp111FUPvPe6q1be8NvxT61LqsPefX6B38NVdS8X12x+Pql2G7Zh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","signer":"centauri10d07y265gmmuvt4z0w9aw880jnsr700j7g7ejq"}],"metadata":"none","summary":"none","title":"none"} \ No newline at end of file +{ + "deposit": "5000000000000000ppica", + "messages": [ + { + "@type": "/ibc.lightclients.wasm.v1.MsgPushNewWasmCode", + "code": "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9lSq5snmx677gat+4n04rL7CVZffMej6t9rpu6fMmHXo4646ZPr193/5wYQ6Jj3lN8dc6anbm945deyDxKMfu9O888cl1cObbv/GySqp3txvyajd56bUgtofHnfvwUn1pWF/+cOVtybU80/8/YIJtyXV+j6nvPavlpQafsARJ935Q0c5x+/2vcOPd9XZN+ySXjnVUv1+c0vvo3raav4P5lx2zmhLvfKdb6zrS/Nx8PfPuDPxa0etdp556MSMUq8vTw7fbi9X3fTjD/50wf00X1f1/P2HvTz1zGHFzWcPSaq37r78/qOn5dRvzuix6Rt/ctSvVg/f+weET4Pddr1zEOH1H2z+0s96varU/of+eYdbT7XVq/c8Merju5Va0qF+dc7VSr162d0j+r1hq7+f/Y766CvEm1z2wont9yh17i0/efrg1xw1uKb/wMX03nZH/WVMekRK/ea1gxdNvT2jZqzIfLxhl6R6peGRmYkfJNTvr5mwdufBGXX3+4N+s+dZnjq9ddW/Xl2VUD+pPecvX36T+JzfZq6o2NdRO7bu+5XWeUnVuPSb86/czlNfX3TFgouJND9wwpjT1xEee2nvNx/e9RDCmxefPqOm1lP33HjO62demKUNt/TGGxpS6tCqPb702i5p1XT2macFBP9P77XfQzdWpNQz627+W//HbPVy8+n/mEn7/col95+yh+uqfzw14dv1IxJq6UPv3PijGqWufXK0av+XpRZX3TegzlPqyk0DPphETMoe+7+ZHzPWVvVj77/vtYytrmy/oN9z33XUV5ae8/zV9+TUW5X1z5x1t6deGvv4VyvfSqnrNtYOu2464c1j7D8f8DLR4+7uF377Q0+9/vq6tuHzPLX0N7cMWrnSUickxj9UdyHhufwHPz55qK2e+NIJH960hPblnXedef4dRPve8OqFR/lIKPyfn14wzVNzzpmzh/uOp94PJt940/dS6ruL//Hgyd9Kq/HBry8d+du06rjz4DUfP0vnxS637PDLmzz1VvF7rx9A8DXo97vtcOlPHdW+cvrTR33gqW+9+p+9552VVE2n3DHyXwMdlTjo7XEn0zwvCp497dgLHDX9iv8kdypYxKvs9b0vVyXVxBnLbzl5fEKtH3DyTdUDKtQOzz5dvW5oWp111FUPvPe6q1be8NvxT61LqsPefX6B38NVdS8X12x+Pql2G7Zh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", + "signer": "pica10d07y265gmmuvt4z0w9aw880jnsr700jp7sqj5" + } + ], + "metadata": "none", + "summary": "none", + "title": "none" +} diff --git a/scripts/50/migrate-wasm-code.sh b/scripts/50/migrate-wasm-code.sh new file mode 100755 index 000000000..5fec7112a --- /dev/null +++ b/scripts/50/migrate-wasm-code.sh @@ -0,0 +1,39 @@ +#!/bin/bash +KEY=mykey +DENOM="ppica" +HOME_DIR="mytestnet" +CHAINID="centauri-dev" +BINARY=_build/new/picad +WASM_CONTRACT_PATH="$PWD/bin/ics10_grandpa_cw.wasm" + +WASM_CLIENT_ID="08-wasm-0" +HEX_CHECKSUM=$(sha256sum "$WASM_CONTRACT_PATH" | awk '{ print $1 }') +echo "Hex checksum is: $HEX_CHECKSUM" + +# Convert HEX_CHECKSUM to raw bytes +RAW_CHECKSUM=$(echo "$HEX_CHECKSUM" | xxd -r -p) + +# Convert raw bytes to Base64 +BASE64_CHECKSUM=$(echo -n "$RAW_CHECKSUM" | base64) +echo "Base 64 check sum is: $BASE64_CHECKSUM" + +$BINARY tx ibc-wasm migrate-contract $WASM_CLIENT_ID $HEX_CHECKSUM {} --from $KEY --keyring-backend test --chain-id $CHAINID --home $HOME_DIR --gas 20002152622 --fees 20020166${DENOM} -y + +# exit 0 +# sleep 6 +# # $BINARY query gov proposals -o json > /tmp/proposals.json +# PROPOSAL_ID=5 +# echo "Proposal ID is: $PROPOSAL_ID" + +# # Validator vote yes +# $BINARY tx gov vote $PROPOSAL_ID yes --from $KEY --fees 100000${DENOM} --keyring-backend test --home $HOME_DIR --chain-id $CHAINID -y + +# #Voting time is 20s, check in localnode.sh +# sleep 20 + +# # Check the status +# $BINARY query gov proposal $PROPOSAL_ID -o json > /tmp/proposal.json +# STATUS=$(jq -r '.proposal.status' /tmp/proposal.json) +# echo "Proposal status is: $STATUS" + + diff --git a/scripts/50/store-wasm-code.sh b/scripts/50/store-wasm-code.sh new file mode 100755 index 000000000..5200a01a4 --- /dev/null +++ b/scripts/50/store-wasm-code.sh @@ -0,0 +1,36 @@ +#!/bin/bash +KEY=mykey +DENOM="ppica" +HOME_DIR="mytestnet" +CHAINID="centauri-dev" +BINARY=picad +WASM_CONTRACT_PATH="$PWD/bin/ics10_grandpa_cw.wasm" + +# Wait for chain to start +echo "Waiting for chain to start..." + +picad keys show mykey --keyring-backend test --home mytestnet + +$BINARY tx ibc-wasm store-code $WASM_CONTRACT_PATH --from mykey --keyring-backend test --chain-id $CHAINID --home $HOME_DIR --gas 20002152622 --fees 20020166${DENOM} -y + +# exit 0 +# # Fetch proposal id +# sleep 6 +# # $BINARY query gov proposals -o json > /tmp/proposals.json +# # PROPOSAL_ID=$(jq -r '.proposals[-1].id' /tmp/proposals.json) +# PROPOSAL_ID=3 ## fix this +# echo "Proposal ID is: $PROPOSAL_ID" + +# # Validator vote yes +# $BINARY tx gov vote $PROPOSAL_ID yes --from $KEY --fees 100000${DENOM} --keyring-backend test --home $HOME_DIR --chain-id $CHAINID -y + +# #Voting time is 20s, check in localnode.sh +# sleep 20 + +# # Check the status +# $BINARY query gov proposal $PROPOSAL_ID -o json > /tmp/proposal.json +# STATUS=$(jq -r '.proposal.status' /tmp/proposal.json) +# echo "Proposal status is: $STATUS" + +# # Query wasm checksums +# $BINARY query ibc-wasm checksums diff --git a/scripts/localnode-upgrade.sh b/scripts/localnode-upgrade.sh new file mode 100755 index 000000000..c8d5dd007 --- /dev/null +++ b/scripts/localnode-upgrade.sh @@ -0,0 +1,78 @@ +#!/bin/bash +BINARY=$1 +CHAINID="localpica" +MONIKER="localtestnet" +KEYALGO="secp256k1" +KEYRING="test" +LOGLEVEL="info" +CONTINUE=${CONTINUE:-"false"} +# to trace evm +#TRACE="--trace" +TRACE="" + +KEY="test0" +KEY1="test1" +KEY2="test2" + +HOME_DIR=mytestnet +DENOM=${2:-ppica} + + +if [ "$CONTINUE" == "true" ]; then + echo "\n ->> continuing from previous state" + $BINARY start --home $HOME_DIR --log_level debug + exit 0 +fi + + +# remove existing daemon +rm -rf $HOME_DIR + +$BINARY config keyring-backend $KEYRING +$BINARY config chain-id $CHAINID +# if $KEY exists it should be deleted + +$BINARY init $CHAINID --chain-id $CHAINID --default-denom $DENOM --home $HOME_DIR >/dev/null 2>&1 + + +echo "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" | $BINARY keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO --recover --home $HOME_DIR + +$BINARY keys add $KEY1 --keyring-backend $KEYRING --home $HOME_DIR +$BINARY keys add $KEY2 --keyring-backend $KEYRING --home $HOME_DIR +$BINARY keys add $KEY3 --keyring-backend $KEYRING --home $HOME_DIR + + +update_test_genesis () { + # update_test_genesis '.consensus_params["block"]["max_gas"]="100000000"' + cat $HOME_DIR/config/genesis.json | jq "$1" > $HOME_DIR/config/tmp_genesis.json && mv $HOME_DIR/config/tmp_genesis.json $HOME_DIR/config/genesis.json +} + +# Allocate genesis accounts (cosmos formatted addresses) +$BINARY add-genesis-account $KEY 100000000000000000000000000$DENOM --keyring-backend $KEYRING --home $HOME_DIR +$BINARY add-genesis-account $KEY1 100000000000000000000000000$DENOM --keyring-backend $KEYRING --home $HOME_DIR +$BINARY add-genesis-account $KEY2 100000000000000000000000000$DENOM --keyring-backend $KEYRING --home $HOME_DIR +$BINARY add-genesis-account $KEY3 100000000000000000000000000$DENOM --keyring-backend $KEYRING --home $HOME_DIR + + +# Sign genesis transaction +$BINARY gentx $KEY 1000000000000000000000$DENOM --keyring-backend $KEYRING --chain-id $CHAINID --home $HOME_DIR + +update_test_genesis '.app_state["gov"]["params"]["voting_period"]="5s"' +update_test_genesis '.app_state["mint"]["params"]["mint_denom"]="'$DENOM'"' +update_test_genesis '.app_state["gov"]["params"]["min_deposit"]=[{"denom":"'$DENOM'","amount": "100"}]' +update_test_genesis '.app_state["crisis"]["constant_fee"]={"denom":"'$DENOM'","amount":"1000"}' +update_test_genesis '.app_state["staking"]["params"]["bond_denom"]="'$DENOM'"' + +# sed -i 's/timeout_commit = "5s"/timeout_commit = "500ms"/' $HOME_DIR/config/config.toml + +echo "updating.." +sed -i '' 's/timeout_commit = "5s"/timeout_commit = "500ms"/' $HOME_DIR/config/config.toml + +# Collect genesis tx +$BINARY collect-gentxs --home $HOME_DIR + +# Run this to ensure everything worked and that the genesis file is setup correctly +$BINARY validate-genesis --home $HOME_DIR + +$BINARY start --rpc.unsafe --rpc.laddr tcp://0.0.0.0:26657 --pruning=nothing --minimum-gas-prices=0.000ppica --home $HOME_DIR + diff --git a/scripts/localnode.sh b/scripts/localnode.sh index b9ff67675..3acacf83a 100755 --- a/scripts/localnode.sh +++ b/scripts/localnode.sh @@ -1,19 +1,18 @@ #!/bin/bash - +BINARY=$1 KEY="mykey" -KEY1="mykey1" -CHAINID="centauri-dev" +CHAINID="localpica" MONIKER="localtestnet" KEYALGO="secp256k1" KEYRING="test" LOGLEVEL="info" -BINARY=$1 +CONTINUE=${CONTINUE:-"false"} # to trace evm #TRACE="--trace" TRACE="" HOME_DIR=mytestnet -DENOM=ppica +DENOM=${2:-ppica} if [ "$CONTINUE" == "true" ]; then @@ -22,49 +21,37 @@ if [ "$CONTINUE" == "true" ]; then exit 0 fi -$BINARY config keyring-backend $KEYRING -$BINARY config chain-id $CHAINID # remove existing daemon rm -rf $HOME_DIR +# centaurid config keyring-backend $KEYRING +# centaurid config chain-id $CHAINID + # if $KEY exists it should be deleted + echo "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" | $BINARY keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO --recover --home $HOME_DIR -echo "bottom loan skill merry east cradle onion journey palm apology verb edit desert impose absurd oil bubble sweet glove shallow size build burst effort" | $BINARY keys add $KEY1 --keyring-backend $KEYRING --algo $KEYALGO --recover --home $HOME_DIR -$BINARY init $CHAINID --chain-id $CHAINID --default-denom "ppica" --home $HOME_DIR update_test_genesis () { # update_test_genesis '.consensus_params["block"]["max_gas"]="100000000"' - cat $HOME_DIR/config/genesis.json | jq "$1" > $HOME_DIR/config/tmp_genesis.json && cp $HOME_DIR/config/tmp_genesis.json $HOME_DIR/config/genesis.json + cat $HOME_DIR/config/genesis.json | jq "$1" > $HOME_DIR/config/tmp_genesis.json && mv $HOME_DIR/config/tmp_genesis.json $HOME_DIR/config/genesis.json } # Allocate genesis accounts (cosmos formatted addresses) -$BINARY add-genesis-account $KEY 100000000000000000000000000ppica --keyring-backend $KEYRING --home $HOME_DIR -$BINARY add-genesis-account $KEY1 100000000000000000000000000ppica --keyring-backend $KEYRING --home $HOME_DIR +$BINARY add-genesis-account $KEY 100000000000000000000000000$DENOM --keyring-backend $KEYRING --home $HOME_DIR + # Sign genesis transaction -$BINARY gentx $KEY 10030009994127689ppica --keyring-backend $KEYRING --chain-id $CHAINID --home $HOME_DIR +$BINARY gentx $KEY 1000000000000000000000$DENOM --keyring-backend $KEYRING --chain-id $CHAINID --home $HOME_DIR update_test_genesis '.app_state["gov"]["params"]["voting_period"]="5s"' update_test_genesis '.app_state["mint"]["params"]["mint_denom"]="'$DENOM'"' -update_test_genesis '.app_state["gov"]["params"]["min_deposit"]=[{"denom":"'$DENOM'","amount": "1"}]' +update_test_genesis '.app_state["gov"]["params"]["min_deposit"]=[{"denom":"'$DENOM'","amount": "1000000"}]' update_test_genesis '.app_state["crisis"]["constant_fee"]={"denom":"'$DENOM'","amount":"1000"}' +update_test_genesis '.app_state["staking"]["params"]["bond_denom"]="'$DENOM'"' -# Collect genesis tx -$BINARY collect-gentxs --home $HOME_DIR - -# Run this to ensure everything worked and that the genesis file is setup correctly -$BINARY validate-genesis --home $HOME_DIR - -if [[ $1 == "pending" ]]; then - echo "pending mode is on, please wait for the first block committed." -fi - -# update request max size so that we can upload the light client -# '' -e is a must have params on mac, if use linux please delete before run -sed -i'' -e 's/max_body_bytes = /max_body_bytes = 1/g' $HOME_DIR/config/config.toml -sed -i'' -e 's/max_tx_bytes = 1048576/max_tx_bytes = 10000000/g' $HOME_DIR/config/config.toml -sed -i'' -e 's/timeout_commit = "5s"/timeout_commit = "1s"/' $HOME_DIR/config/config.toml +# sed -i 's/timeout_commit = "5s"/timeout_commit = "500ms"/' $HOME_DIR/config/config.toml +echo "updating.." +sed -i '' 's/timeout_commit = "5s"/timeout_commit = "500ms"/' $HOME_DIR/config/config.toml -$BINARY start --rpc.unsafe --rpc.laddr tcp://0.0.0.0:26657 --pruning=nothing --minimum-gas-prices=0.001ppica --home=$HOME_DIR --log_level trace --trace --with-tendermint=true --transport=socket --grpc.enable=true --grpc-web.enable=false --api.enable=true --p2p.pex=false --p2p.upnp=false \ No newline at end of file diff --git a/scripts/old-node/push-08-wasm.sh b/scripts/old-node/push-08-wasm.sh new file mode 100755 index 000000000..a8184b6db --- /dev/null +++ b/scripts/old-node/push-08-wasm.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +KEY="mykey" +KEYALGO="secp256k1" +KEYRING="test" +HOME_DIR="mytestnet" +# validate dependencies are installed +command -v jq > /dev/null 2>&1 || { echo >&2 "jq not installed. More info: https://stedolan.github.io/jq/download/"; exit 1; } + +./_build/old/centaurid tx 08-wasm push-wasm contracts/ics10_grandpa_cw.wasm --from=mykey --gas 10002152622 --fees 10020166upica --keyring-backend test --chain-id=localpica -y --home $HOME_DIR + +sleep 5 + +./_build/old/centaurid query 08-wasm all-wasm-code --home $HOME_DIR \ No newline at end of file diff --git a/scripts/old-node/testnode.sh b/scripts/old-node/testnode.sh new file mode 100755 index 000000000..2911edc98 --- /dev/null +++ b/scripts/old-node/testnode.sh @@ -0,0 +1,71 @@ +#!/bin/bash +BINARY=${1:-_build/old/centaurid} +KEY="mykey" +CHAINID="localpica" +MONIKER="localtestnet" +KEYALGO="secp256k1" +KEYRING="test" +LOGLEVEL="info" +CONTINUE=${CONTINUE:-"false"} +# to trace evm +#TRACE="--trace" +TRACE="" + +HOME_DIR=~/.banksy +DENOM=upica + +if [ "$CONTINUE" == "true" ]; then + echo "\n ->> continuing from previous state" + $BINARY start --home $HOME_DIR --log_level debug + exit 0 +fi + + +# remove existing daemon +rm -rf $HOME_DIR + +# centaurid config keyring-backend $KEYRING +# centaurid config chain-id $CHAINID + +# if $KEY exists it should be deleted +$BINARY init $MONIKER --chain-id $CHAINID --home $HOME_DIR > /dev/null 2>&1 + +echo "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" | $BINARY keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO --recover --home $HOME_DIR + +update_test_genesis () { + # update_test_genesis '.consensus_params["block"]["max_gas"]="100000000"' + cat $HOME_DIR/config/genesis.json | jq "$1" > $HOME_DIR/config/tmp_genesis.json && mv $HOME_DIR/config/tmp_genesis.json $HOME_DIR/config/genesis.json +} + +# Allocate genesis accounts (cosmos formatted addresses) +$BINARY add-genesis-account $KEY 100000000000000000000000000$DENOM --keyring-backend $KEYRING --home $HOME_DIR + + +# Sign genesis transaction +$BINARY gentx $KEY 1000000000000000000000$DENOM --keyring-backend $KEYRING --chain-id $CHAINID --home $HOME_DIR + +update_test_genesis '.app_state["gov"]["params"]["voting_period"]="50s"' +update_test_genesis '.app_state["mint"]["params"]["mint_denom"]="'$DENOM'"' +update_test_genesis '.app_state["gov"]["params"]["min_deposit"]=[{"denom":"'$DENOM'","amount": "0"}]' +update_test_genesis '.app_state["crisis"]["constant_fee"]={"denom":"'$DENOM'","amount":"1000"}' +update_test_genesis '.app_state["staking"]["params"]["bond_denom"]="'$DENOM'"' + +# sed -i 's/timeout_commit = "5s"/timeout_commit = "500ms"/' $HOME_DIR/config/config.toml + + +# Collect genesis tx +$BINARY collect-gentxs --home $HOME_DIR + +# Run this to ensure everything worked and that the genesis file is setup correctly +$BINARY validate-genesis --home $HOME_DIR + +if [[ $1 == "pending" ]]; then + echo "pending mode is on, please wait for the first block committed." +fi + +# update request max size so that we can upload the light client +# '' -e is a must have params on mac, if use linux please delete before run +sed -i'' -e 's/max_body_bytes = /max_body_bytes = 1/g' $HOME_DIR/config/config.toml + +# Start the node (remove the --pruning=nothing flag if historical queries are not needed) +$BINARY start --pruning=nothing --minimum-gas-prices=0.0001$DENOM --rpc.laddr tcp://0.0.0.0:26657 --home $HOME_DIR --log_level debug diff --git a/scripts/polkadot-js/getter/get_balance.ts b/scripts/polkadot-js/getter/get_balance.ts new file mode 100644 index 000000000..38a04803a --- /dev/null +++ b/scripts/polkadot-js/getter/get_balance.ts @@ -0,0 +1,39 @@ +import { ApiPromise, WsProvider } from "@polkadot/api"; +import { getProvider, getWallets } from "../utils/indexer"; + +// Put the address of the account you want to fetch info for here + +async function fetchAccountInfo() { + // Initialise the provider to connect to the local node + + // Create the API instance + const api = await getProvider(); + + const wallets = getWallets(); + try { + // Fetch the account info + const accountInfo = await api.query.system.account(wallets.alice.address); + + console.log( + `Account ${wallets.alice.address} info:`, + accountInfo.toHuman() + ); + } catch (error) { + console.error("Error fetching account info:", error); + } + + try { + const bobAccountInfo = await api.query.system.account(wallets.bob.address); + console.log( + `Account ${wallets.bob.address} info:`, + bobAccountInfo.toHuman() + ); + } catch (error) { + console.error("Error fetching account info:", error); + } finally { + // Disconnect the provider when done + api.disconnect(); + } +} + +fetchAccountInfo(); diff --git a/scripts/polkadot-js/getter/list_method_params.ts b/scripts/polkadot-js/getter/list_method_params.ts new file mode 100644 index 000000000..68825a84d --- /dev/null +++ b/scripts/polkadot-js/getter/list_method_params.ts @@ -0,0 +1,88 @@ +import { ApiPromise } from "@polkadot/api"; +import { getProvider } from "../utils/indexer"; + +async function run() { + const api = await getProvider(); + await listTxMethods(api); +} +type MetadataV14 = { + magicNumber: string; + metadata: { + v14: { + lookup: { + types: [ + { + id: string; + type: { + path: string[]; + params: object[]; + def: object; + docs: string[]; + }; + } + ]; + }; + pallets: Array<{ + name: string; + calls?: Array<{ + name: string; + args: Array<{ + name: string; + type: string | number; // Depending on how types are represented, you might need to adjust this + }>; + }>; + }>; + extrinsic: object; + type: string; + }; + }; +}; + +async function listTxMethods(api: ApiPromise) { + console.log("\nTransaction Methods:"); + const metadata = await api.rpc.state.getMetadata(); + + const metadataV14 = metadata.toJSON() as { + magicNumber: string; + metadata: { + v14: { + lookup: { + types: [ + { + id: string; + type: { + path: string[]; + params: object[]; + def: object; + docs: string[]; + }; + } + ]; + }; + pallets: Array; + extrinsic: object; + type: string; + }; + }; + }; + + console.log("pallets: ", metadataV14.metadata.v14.pallets); + // Usage example, assuming you have metadataV14 of type MetadataV14 + const ibcModule = metadataV14.metadata.v14.pallets.find( + (pallet) => pallet.name === "Ibc" + ); + + if (ibcModule && ibcModule.calls) { + const transferMethod = ibcModule.calls.find( + (call: any) => call.name === "transfer" + ); + if (transferMethod) { + console.log(`Parameters for ibc.transfer:`); + transferMethod.args.forEach((arg: any) => { + console.log(`${arg.name}: ${arg.type}`); + }); + } + } +} + +run().catch(console.error); diff --git a/scripts/polkadot-js/getter/list_rpc_methods.ts b/scripts/polkadot-js/getter/list_rpc_methods.ts new file mode 100644 index 000000000..842d76d58 --- /dev/null +++ b/scripts/polkadot-js/getter/list_rpc_methods.ts @@ -0,0 +1,33 @@ +import { ApiPromise, WsProvider } from "@polkadot/api"; +import { getProvider, getWallets } from "../utils/indexer"; + +// Put the address of the account you want to fetch info for here + +async function run() { + // Initialise the provider to connect to the local node + + // Create the API instance + const api = await getProvider(); + + listTxMethods(api); +} + +run(); + +function listTxMethods(api: ApiPromise) { + console.log("\nTransaction Methods:"); + Object.keys(api.tx).forEach((module) => { + Object.keys(api.tx[module]).forEach((method) => { + console.log(`${module}.${method}`); + }); + }); +} + +function listQueryMethods(api: ApiPromise) { + console.log("\nQuery Methods:"); + Object.keys(api.query).forEach((module) => { + Object.keys(api.query[module]).forEach((method) => { + console.log(`${module}.${method}`); + }); + }); +} diff --git a/scripts/polkadot-js/package.json b/scripts/polkadot-js/package.json new file mode 100644 index 000000000..621fb04a5 --- /dev/null +++ b/scripts/polkadot-js/package.json @@ -0,0 +1,13 @@ +{ + "name": "polkadot-js", + "version": "1.0.0", + "main": "index.js", + "license": "MIT", + "devDependencies": { + "typescript": "^5.4.5" + }, + "dependencies": { + "@polkadot/api": "^10.12.6", + "@polkadot/keyring": "^12.6.2" + } +} diff --git a/scripts/polkadot-js/src/ibc-transfer.ts b/scripts/polkadot-js/src/ibc-transfer.ts new file mode 100644 index 000000000..2f30f5e00 --- /dev/null +++ b/scripts/polkadot-js/src/ibc-transfer.ts @@ -0,0 +1,109 @@ +import { ApiPromise, WsProvider } from "@polkadot/api"; +import { Keyring } from "@polkadot/keyring"; +import BN from "bn.js"; +import { KeyringPair } from "@polkadot/keyring/types"; +import { getProvider, getWallets } from "../utils/indexer"; + +async function sendIbcFundsTx( + api: ApiPromise, + senderKeypair: KeyringPair, + channelID: string, + amount: { denom: string; amount: string; address: string }, + options: any +) { + { + // Ensure the API is connected + if (!api.isConnected) { + await api.connect(); + } + + // Calculate the timestamp for 5 minutes into the future + const fiveMinutes = 5 * 60 * 1000; // 5 minutes in milliseconds + const futureTimestamp = new Date().getTime() + fiveMinutes; // Current time + 5 minutes + + const substrateFutureTimestamp = api.createType("u64", futureTimestamp); + + // dont have to convert + const to = { Raw: amount.address }; + + const assetNum = 1; + const sourceChannel = 0; + const timeout = { + Offset: { + timestamp: api.createType("Option", substrateFutureTimestamp), // or provide a specific timestamp offset + }, + }; + + // Construct paramters + const params = { + to, + source_channel: sourceChannel, + timeout, + }; + + const assetId = new BN(assetNum); + const amountBN = new BN(amount.amount, 10); + const memo = null; + + // Make the call to ibc.transfer with the transferObj + const call = api.tx.ibc.transfer(params, assetId, amountBN, memo); + // Sign and send the transaction + return await new Promise((resolve, reject) => { + call + .signAndSend( + senderKeypair, + { nonce: -1 }, + ({ status, dispatchError }) => { + if (status.isInBlock || status.isFinalized) { + if (dispatchError) { + if (dispatchError.isModule) { + // For module errors, we have the section indexed, lookup + const decoded = api.registry.findMetaError( + dispatchError.asModule + ); + const { docs, name, section } = decoded; + reject(new Error(`${section}.${name}: ${docs.join(" ")}`)); + } else { + // Other, CannotLookup, BadOrigin, no extra info + reject(new Error(dispatchError.toString())); + } + } else { + resolve(status.asFinalized.toString()); + } + } + } + ) + .catch(reject); + }); + } +} +// Example usage +async function main() { + const api = await getProvider(); + const wallets = getWallets(); + const senderKeypair = wallets.alice; + + const channelID = "0"; + const amount = { + denom: "1", + amount: "1000000000000000", + address: "pica1hj5fveer5cjtn4wd6wstzugjfdxzl0xpas3hgy", + }; + + const options = {}; + + try { + const hash = await sendIbcFundsTx( + api, + senderKeypair, + channelID, + amount, + options + ); + console.log("Transaction hash:", hash); + } catch (error) { + console.error("Error sending IBC funds:", error); + } +} + +main().catch(console.error); diff --git a/scripts/polkadot-js/src/simple-connect.ts b/scripts/polkadot-js/src/simple-connect.ts new file mode 100644 index 000000000..8f4bad209 --- /dev/null +++ b/scripts/polkadot-js/src/simple-connect.ts @@ -0,0 +1,25 @@ +// Required imports +import { ApiPromise, WsProvider } from "@polkadot/api"; + +async function main() { + // Initialise the provider to connect to the local node + const provider = new WsProvider("ws://127.0.0.1:9944"); + + // Create the API and wait until ready + const api = await ApiPromise.create({ provider }); + + // Retrieve the chain & node information via rpc calls + const [chain, nodeName, nodeVersion] = await Promise.all([ + api.rpc.system.chain(), + api.rpc.system.name(), + api.rpc.system.version(), + ]); + + console.log( + `You are connected to chain ${chain} using ${nodeName} v${nodeVersion}` + ); +} + +main() + .catch(console.error) + .finally(() => process.exit()); diff --git a/scripts/polkadot-js/src/transfer.ts b/scripts/polkadot-js/src/transfer.ts new file mode 100644 index 000000000..52e2b7210 --- /dev/null +++ b/scripts/polkadot-js/src/transfer.ts @@ -0,0 +1,51 @@ +import { ApiPromise } from "@polkadot/api"; +import { Keyring } from "@polkadot/keyring"; +import { getProvider, getWallets } from "../utils/indexer"; + +// The amount to transfer +const amount = 1000; // Adjust the amount as needed + +async function transferFunds() { + const api = await getProvider(); + + console.log("hello"); + const wallets = getWallets(); + + console.log("Alice address: ", wallets.alice.address); + console.log("Bob address: ", wallets.bob.address); + + // Fetch the next nonce for the Alice's account + const { nonce } = (await api.query.system.account( + wallets.alice.address + )) as any; + + // Construct the transaction + const transfer = api.tx.balances.transfer(wallets.bob.address, amount); + + console.log( + `Transferring ${amount} from ${wallets.alice.address} to ${wallets.bob.address}` + ); + console.log(`Nonce: ${nonce}`); + + // Sign and send the transaction, and subscribe to its status updates + const unsub = await transfer.signAndSend( + wallets.alice, + ({ status, events }) => { + if (status.isInBlock) { + console.log(`Transaction included at blockHash ${status.asInBlock}`); + } else if (status.isFinalized) { + console.log(`Transaction finalized at blockHash ${status.asFinalized}`); + events.forEach(({ event: { data, method, section }, phase }) => { + console.log(`\t' ${phase}: ${section}.${method} ${data}`); + }); + + // Once finalized, we can unsubscribe from further updates + unsub(); + // Disconnect from the provider + api.disconnect(); + } + } + ); +} + +transferFunds(); diff --git a/scripts/polkadot-js/tsconfig.json b/scripts/polkadot-js/tsconfig.json new file mode 100644 index 000000000..b0678e34f --- /dev/null +++ b/scripts/polkadot-js/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "outDir": "./dist" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "**/*.spec.ts"] +} diff --git a/scripts/polkadot-js/utils/indexer.ts b/scripts/polkadot-js/utils/indexer.ts new file mode 100644 index 000000000..2d74fe12f --- /dev/null +++ b/scripts/polkadot-js/utils/indexer.ts @@ -0,0 +1,30 @@ +import { ApiPromise, WsProvider } from "@polkadot/api"; +import { Keyring } from "@polkadot/keyring"; +import { KeyringPair } from "@polkadot/keyring/types"; + +export type TestWallets = { + alice: KeyringPair; + bob: KeyringPair; +}; + +export const getProvider = async (): Promise => { + // Initialise the provider to connect to the local node + const wsEndpoint = "ws://127.0.0.1:9988"; + const provider = new WsProvider(wsEndpoint); + + console.log(`connection to provider at ${wsEndpoint}`); + + // Create the API and wait until ready + const api = await ApiPromise.create({ provider }); + + return api; +}; + +export const getWallets = (): TestWallets => { + // Add Alice to our keyring with a well-known development mnemonic + const keyring = new Keyring({ type: "sr25519" }); + const alice = keyring.addFromUri("//Alice"); + const bob = keyring.addFromUri("//Bob"); + + return { alice, bob }; +}; diff --git a/scripts/polkadot-js/yarn.lock b/scripts/polkadot-js/yarn.lock new file mode 100644 index 000000000..3153ee0e0 --- /dev/null +++ b/scripts/polkadot-js/yarn.lock @@ -0,0 +1,569 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@noble/curves@^1.3.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" + integrity sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg== + dependencies: + "@noble/hashes" "1.4.0" + +"@noble/hashes@1.4.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.3": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + +"@polkadot-api/client@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0": + version "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + resolved "https://registry.yarnpkg.com/@polkadot-api/client/-/client-0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0.tgz#5d6b863f63f5c6ecd4183fcf0c5c84dd349f7627" + integrity sha512-0fqK6pUKcGHSG2pBvY+gfSS+1mMdjd/qRygAcKI5d05tKsnZLRnmhb9laDguKmGEIB0Bz9vQqNK3gIN/cfvVwg== + dependencies: + "@polkadot-api/metadata-builders" "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + "@polkadot-api/substrate-bindings" "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + "@polkadot-api/substrate-client" "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + "@polkadot-api/utils" "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + +"@polkadot-api/json-rpc-provider-proxy@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0": + version "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + resolved "https://registry.yarnpkg.com/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0.tgz#cc28fb801db6a47824261a709ab924ec6951eb96" + integrity sha512-0hZ8vtjcsyCX8AyqP2sqUHa1TFFfxGWmlXJkit0Nqp9b32MwZqn5eaUAiV2rNuEpoglKOdKnkGtUF8t5MoodKw== + +"@polkadot-api/json-rpc-provider@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0": + version "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + resolved "https://registry.yarnpkg.com/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0.tgz#2f71bfb192d28dd4c400ef8b1c5f934c676950f3" + integrity sha512-EaUS9Fc3wsiUr6ZS43PQqaRScW7kM6DYbuM/ou0aYjm8N9MBqgDbGm2oL6RE1vAVmOfEuHcXZuZkhzWtyvQUtA== + +"@polkadot-api/metadata-builders@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0": + version "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + resolved "https://registry.yarnpkg.com/@polkadot-api/metadata-builders/-/metadata-builders-0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0.tgz#085db2a3c7b100626b2fae3be35a32a24ea7714f" + integrity sha512-BD7rruxChL1VXt0icC2gD45OtT9ofJlql0qIllHSRYgama1CR2Owt+ApInQxB+lWqM+xNOznZRpj8CXNDvKIMg== + dependencies: + "@polkadot-api/substrate-bindings" "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + "@polkadot-api/utils" "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + +"@polkadot-api/substrate-bindings@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0": + version "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + resolved "https://registry.yarnpkg.com/@polkadot-api/substrate-bindings/-/substrate-bindings-0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0.tgz#f836a554a9ead6fb6356079c725cd53f87238932" + integrity sha512-N4vdrZopbsw8k57uG58ofO7nLXM4Ai7835XqakN27MkjXMp5H830A1KJE0L9sGQR7ukOCDEIHHcwXVrzmJ/PBg== + dependencies: + "@noble/hashes" "^1.3.1" + "@polkadot-api/utils" "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + "@scure/base" "^1.1.1" + scale-ts "^1.6.0" + +"@polkadot-api/substrate-client@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0": + version "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + resolved "https://registry.yarnpkg.com/@polkadot-api/substrate-client/-/substrate-client-0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0.tgz#55ae463f4143495e328465dd16b03e71663ef4c4" + integrity sha512-lcdvd2ssUmB1CPzF8s2dnNOqbrDa+nxaaGbuts+Vo8yjgSKwds2Lo7Oq+imZN4VKW7t9+uaVcKFLMF7PdH0RWw== + +"@polkadot-api/utils@0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0": + version "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + resolved "https://registry.yarnpkg.com/@polkadot-api/utils/-/utils-0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0.tgz#759698dcf948745ea37cc5ab6abd49a00f1b0c31" + integrity sha512-0CYaCjfLQJTCRCiYvZ81OncHXEKPzAexCMoVloR+v2nl/O2JRya/361MtPkeNLC6XBoaEgLAG9pWQpH3WePzsw== + +"@polkadot/api-augment@10.12.6": + version "10.12.6" + resolved "https://registry.yarnpkg.com/@polkadot/api-augment/-/api-augment-10.12.6.tgz#1e4d551e55509267dfe963d2d3af215140d7249f" + integrity sha512-CZHaFAd6zexk3JCm1mY5doE1E634xNpKaTGpbs61Ch285d5EqBY25GdzGNiMprNl4VyRFT4N7dXKfwEdsM6Z9w== + dependencies: + "@polkadot/api-base" "10.12.6" + "@polkadot/rpc-augment" "10.12.6" + "@polkadot/types" "10.12.6" + "@polkadot/types-augment" "10.12.6" + "@polkadot/types-codec" "10.12.6" + "@polkadot/util" "^12.6.2" + tslib "^2.6.2" + +"@polkadot/api-base@10.12.6": + version "10.12.6" + resolved "https://registry.yarnpkg.com/@polkadot/api-base/-/api-base-10.12.6.tgz#5aabee701d0e18e76b9f20c116f26a85041a3087" + integrity sha512-6EzMettffiadB5j0X2nValtrEZJ2dKZMArfWHbSCV1QRSPOaMO3Phf/idqtF8HgBHD3FCHJ+JsZEns6xpkpteg== + dependencies: + "@polkadot/rpc-core" "10.12.6" + "@polkadot/types" "10.12.6" + "@polkadot/util" "^12.6.2" + rxjs "^7.8.1" + tslib "^2.6.2" + +"@polkadot/api-derive@10.12.6": + version "10.12.6" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-10.12.6.tgz#37b9fc7d026481eb6db76cdfb4683c70ee024eaa" + integrity sha512-stjciYU9caSvPrcPo40zwPu15O7Q9OK9ldMFyyQkDdUT4cCE0LHuCmTNwcm4XhQq3XXJn+e7WNdhBfquwvkuhw== + dependencies: + "@polkadot/api" "10.12.6" + "@polkadot/api-augment" "10.12.6" + "@polkadot/api-base" "10.12.6" + "@polkadot/rpc-core" "10.12.6" + "@polkadot/types" "10.12.6" + "@polkadot/types-codec" "10.12.6" + "@polkadot/util" "^12.6.2" + "@polkadot/util-crypto" "^12.6.2" + rxjs "^7.8.1" + tslib "^2.6.2" + +"@polkadot/api@10.12.6", "@polkadot/api@^10.12.6": + version "10.12.6" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-10.12.6.tgz#d182acc4898350e920ad9a3b01d8ecbcf5359d49" + integrity sha512-qWF7qFLZtpSILuPeZcvz0oCBXe89XndDjzgCnflvEVIUkQvxtFM8mDXpzI4bz8klrLYHlyFbP7HJl/xLi+XTew== + dependencies: + "@polkadot/api-augment" "10.12.6" + "@polkadot/api-base" "10.12.6" + "@polkadot/api-derive" "10.12.6" + "@polkadot/keyring" "^12.6.2" + "@polkadot/rpc-augment" "10.12.6" + "@polkadot/rpc-core" "10.12.6" + "@polkadot/rpc-provider" "10.12.6" + "@polkadot/types" "10.12.6" + "@polkadot/types-augment" "10.12.6" + "@polkadot/types-codec" "10.12.6" + "@polkadot/types-create" "10.12.6" + "@polkadot/types-known" "10.12.6" + "@polkadot/util" "^12.6.2" + "@polkadot/util-crypto" "^12.6.2" + eventemitter3 "^5.0.1" + rxjs "^7.8.1" + tslib "^2.6.2" + +"@polkadot/keyring@^12.6.2": + version "12.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-12.6.2.tgz#6067e6294fee23728b008ac116e7e9db05cecb9b" + integrity sha512-O3Q7GVmRYm8q7HuB3S0+Yf/q/EB2egKRRU3fv9b3B7V+A52tKzA+vIwEmNVaD1g5FKW9oB97rmpggs0zaKFqHw== + dependencies: + "@polkadot/util" "12.6.2" + "@polkadot/util-crypto" "12.6.2" + tslib "^2.6.2" + +"@polkadot/networks@12.6.2", "@polkadot/networks@^12.6.2": + version "12.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-12.6.2.tgz#791779fee1d86cc5b6cd371858eea9b7c3f8720d" + integrity sha512-1oWtZm1IvPWqvMrldVH6NI2gBoCndl5GEwx7lAuQWGr7eNL+6Bdc5K3Z9T0MzFvDGoi2/CBqjX9dRKo39pDC/w== + dependencies: + "@polkadot/util" "12.6.2" + "@substrate/ss58-registry" "^1.44.0" + tslib "^2.6.2" + +"@polkadot/rpc-augment@10.12.6": + version "10.12.6" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-10.12.6.tgz#1815e48c59109d0c8d9703035e9c7f376413201e" + integrity sha512-MMZgdZtVygHqgsmCdKhfaN9ywf6im72xJzc9H8fkqyoJ+cGVy36uI3e8YwEM9vV6g/nallFmz4mU46u8/TjGlw== + dependencies: + "@polkadot/rpc-core" "10.12.6" + "@polkadot/types" "10.12.6" + "@polkadot/types-codec" "10.12.6" + "@polkadot/util" "^12.6.2" + tslib "^2.6.2" + +"@polkadot/rpc-core@10.12.6": + version "10.12.6" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-10.12.6.tgz#5b855d7ee4a6571e3273687a08a85101f0980bfd" + integrity sha512-aBXhkryv2NMNg+cWajn/G0DF13inXIW+6iZV9cGc6lfsYT9Di/sasO0EIx7UUZW3ILYQ6Gh9jRgNLkwSNlAV9Q== + dependencies: + "@polkadot/rpc-augment" "10.12.6" + "@polkadot/rpc-provider" "10.12.6" + "@polkadot/types" "10.12.6" + "@polkadot/util" "^12.6.2" + rxjs "^7.8.1" + tslib "^2.6.2" + +"@polkadot/rpc-provider@10.12.6": + version "10.12.6" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-10.12.6.tgz#6b2e454b7c70ddd87e0bac175f8b26b16bc67ad5" + integrity sha512-xLmzb2rMQXEWQlrIDY3E3IXo1jcV9+Vy3A8zMw/s/UIrwXZ3I0TefP8+mXcqEjLkkz7zwldDQvHfdmtnxdE14g== + dependencies: + "@polkadot/keyring" "^12.6.2" + "@polkadot/types" "10.12.6" + "@polkadot/types-support" "10.12.6" + "@polkadot/util" "^12.6.2" + "@polkadot/util-crypto" "^12.6.2" + "@polkadot/x-fetch" "^12.6.2" + "@polkadot/x-global" "^12.6.2" + "@polkadot/x-ws" "^12.6.2" + eventemitter3 "^5.0.1" + mock-socket "^9.3.1" + nock "^13.5.0" + tslib "^2.6.2" + optionalDependencies: + "@substrate/connect" "0.8.8" + +"@polkadot/types-augment@10.12.6": + version "10.12.6" + resolved "https://registry.yarnpkg.com/@polkadot/types-augment/-/types-augment-10.12.6.tgz#065f185040d793a170cfef5a9171b280f02731e7" + integrity sha512-eUNanLs0w7SQLlsjFs7kTPfOTclfjllJxghwRqWZFHWjUbVcGcPwr8ITv/mfx1WTCqUqLMe6K8CPJ7BSggAWBA== + dependencies: + "@polkadot/types" "10.12.6" + "@polkadot/types-codec" "10.12.6" + "@polkadot/util" "^12.6.2" + tslib "^2.6.2" + +"@polkadot/types-codec@10.12.6": + version "10.12.6" + resolved "https://registry.yarnpkg.com/@polkadot/types-codec/-/types-codec-10.12.6.tgz#5518b66f7620b2f35d7b2a66f900ab0fea68aa89" + integrity sha512-yCzKdj/mLhjSG3mR1XhQdzzpAy0Exv9UuEhGQHPpdjkF0CCfVgsFoOAF3ScsSzwacJxGgxPWvlk849DfTrBYGA== + dependencies: + "@polkadot/util" "^12.6.2" + "@polkadot/x-bigint" "^12.6.2" + tslib "^2.6.2" + +"@polkadot/types-create@10.12.6": + version "10.12.6" + resolved "https://registry.yarnpkg.com/@polkadot/types-create/-/types-create-10.12.6.tgz#ea5113f39e63c27cba9e9a84f7490233fa6f6a01" + integrity sha512-byuPy7IUFjzoxG3qrP4kEScfR92KFOAkaJksNT4kDZILPCeZSPPN7cLqdejypwDBqJthTJM0LqKK4g+eHGKdvw== + dependencies: + "@polkadot/types-codec" "10.12.6" + "@polkadot/util" "^12.6.2" + tslib "^2.6.2" + +"@polkadot/types-known@10.12.6": + version "10.12.6" + resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-10.12.6.tgz#fe7966224167ac0e2995558ef3867885baf9d642" + integrity sha512-E/LWfOAPUW7YKAiioY7Ax/s+G4cuNQop3U/TPPM7sxXOv9hSia2hgFjtiU4NyTRVwf1O07YASXtYSecdSgcCuQ== + dependencies: + "@polkadot/networks" "^12.6.2" + "@polkadot/types" "10.12.6" + "@polkadot/types-codec" "10.12.6" + "@polkadot/types-create" "10.12.6" + "@polkadot/util" "^12.6.2" + tslib "^2.6.2" + +"@polkadot/types-support@10.12.6": + version "10.12.6" + resolved "https://registry.yarnpkg.com/@polkadot/types-support/-/types-support-10.12.6.tgz#e2e4a18f88d7744c3b8b6e638f4081ea00cff23e" + integrity sha512-SMq/hUZJLCZXq26pNDaxgXNJqAJD8YhVXWXulCg0YvbIoVwEkFE66TEkUbtoRLKcsZXbPdxJ3JfSoa9r6Ewhnw== + dependencies: + "@polkadot/util" "^12.6.2" + tslib "^2.6.2" + +"@polkadot/types@10.12.6": + version "10.12.6" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-10.12.6.tgz#548843577d4ed04258eda39041402c789de679cf" + integrity sha512-ByjvZkKJclHSWEETk1m9HPYn/IdIyjWONOdy7Ih+/Nd0wVIahvXDYbV4CXe25xO0RhfFJzkGIZP+LFHL5F63Uw== + dependencies: + "@polkadot/keyring" "^12.6.2" + "@polkadot/types-augment" "10.12.6" + "@polkadot/types-codec" "10.12.6" + "@polkadot/types-create" "10.12.6" + "@polkadot/util" "^12.6.2" + "@polkadot/util-crypto" "^12.6.2" + rxjs "^7.8.1" + tslib "^2.6.2" + +"@polkadot/util-crypto@12.6.2", "@polkadot/util-crypto@^12.6.2": + version "12.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-12.6.2.tgz#d2d51010e8e8ca88951b7d864add797dad18bbfc" + integrity sha512-FEWI/dJ7wDMNN1WOzZAjQoIcCP/3vz3wvAp5QQm+lOrzOLj0iDmaIGIcBkz8HVm3ErfSe/uKP0KS4jgV/ib+Mg== + dependencies: + "@noble/curves" "^1.3.0" + "@noble/hashes" "^1.3.3" + "@polkadot/networks" "12.6.2" + "@polkadot/util" "12.6.2" + "@polkadot/wasm-crypto" "^7.3.2" + "@polkadot/wasm-util" "^7.3.2" + "@polkadot/x-bigint" "12.6.2" + "@polkadot/x-randomvalues" "12.6.2" + "@scure/base" "^1.1.5" + tslib "^2.6.2" + +"@polkadot/util@12.6.2", "@polkadot/util@^12.6.2": + version "12.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-12.6.2.tgz#9396eff491221e1f0fd28feac55fc16ecd61a8dc" + integrity sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw== + dependencies: + "@polkadot/x-bigint" "12.6.2" + "@polkadot/x-global" "12.6.2" + "@polkadot/x-textdecoder" "12.6.2" + "@polkadot/x-textencoder" "12.6.2" + "@types/bn.js" "^5.1.5" + bn.js "^5.2.1" + tslib "^2.6.2" + +"@polkadot/wasm-bridge@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-bridge/-/wasm-bridge-7.3.2.tgz#e1b01906b19e06cbca3d94f10f5666f2ae0baadc" + integrity sha512-AJEXChcf/nKXd5Q/YLEV5dXQMle3UNT7jcXYmIffZAo/KI394a+/24PaISyQjoNC0fkzS1Q8T5pnGGHmXiVz2g== + dependencies: + "@polkadot/wasm-util" "7.3.2" + tslib "^2.6.2" + +"@polkadot/wasm-crypto-asmjs@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.3.2.tgz#c6d41bc4b48b5359d57a24ca3066d239f2d70a34" + integrity sha512-QP5eiUqUFur/2UoF2KKKYJcesc71fXhQFLT3D4ZjG28Mfk2ZPI0QNRUfpcxVQmIUpV5USHg4geCBNuCYsMm20Q== + dependencies: + tslib "^2.6.2" + +"@polkadot/wasm-crypto-init@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.3.2.tgz#7e1fe79ba978fb0a4a0f74a92d976299d38bc4b8" + integrity sha512-FPq73zGmvZtnuJaFV44brze3Lkrki3b4PebxCy9Fplw8nTmisKo9Xxtfew08r0njyYh+uiJRAxPCXadkC9sc8g== + dependencies: + "@polkadot/wasm-bridge" "7.3.2" + "@polkadot/wasm-crypto-asmjs" "7.3.2" + "@polkadot/wasm-crypto-wasm" "7.3.2" + "@polkadot/wasm-util" "7.3.2" + tslib "^2.6.2" + +"@polkadot/wasm-crypto-wasm@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.3.2.tgz#44e08ed5cf6499ce4a3aa7247071a5d01f6a74f4" + integrity sha512-15wd0EMv9IXs5Abp1ZKpKKAVyZPhATIAHfKsyoWCEFDLSOA0/K0QGOxzrAlsrdUkiKZOq7uzSIgIDgW8okx2Mw== + dependencies: + "@polkadot/wasm-util" "7.3.2" + tslib "^2.6.2" + +"@polkadot/wasm-crypto@^7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-7.3.2.tgz#61bbcd9e591500705c8c591e6aff7654bdc8afc9" + integrity sha512-+neIDLSJ6jjVXsjyZ5oLSv16oIpwp+PxFqTUaZdZDoA2EyFRQB8pP7+qLsMNk+WJuhuJ4qXil/7XiOnZYZ+wxw== + dependencies: + "@polkadot/wasm-bridge" "7.3.2" + "@polkadot/wasm-crypto-asmjs" "7.3.2" + "@polkadot/wasm-crypto-init" "7.3.2" + "@polkadot/wasm-crypto-wasm" "7.3.2" + "@polkadot/wasm-util" "7.3.2" + tslib "^2.6.2" + +"@polkadot/wasm-util@7.3.2", "@polkadot/wasm-util@^7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-util/-/wasm-util-7.3.2.tgz#4fe6370d2b029679b41a5c02cd7ebf42f9b28de1" + integrity sha512-bmD+Dxo1lTZyZNxbyPE380wd82QsX+43mgCm40boyKrRppXEyQmWT98v/Poc7chLuskYb6X8IQ6lvvK2bGR4Tg== + dependencies: + tslib "^2.6.2" + +"@polkadot/x-bigint@12.6.2", "@polkadot/x-bigint@^12.6.2": + version "12.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-12.6.2.tgz#59b7a615f205ae65e1ac67194aefde94d3344580" + integrity sha512-HSIk60uFPX4GOFZSnIF7VYJz7WZA7tpFJsne7SzxOooRwMTWEtw3fUpFy5cYYOeLh17/kHH1Y7SVcuxzVLc74Q== + dependencies: + "@polkadot/x-global" "12.6.2" + tslib "^2.6.2" + +"@polkadot/x-fetch@^12.6.2": + version "12.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-fetch/-/x-fetch-12.6.2.tgz#b1bca028db90263bafbad2636c18d838d842d439" + integrity sha512-8wM/Z9JJPWN1pzSpU7XxTI1ldj/AfC8hKioBlUahZ8gUiJaOF7K9XEFCrCDLis/A1BoOu7Ne6WMx/vsJJIbDWw== + dependencies: + "@polkadot/x-global" "12.6.2" + node-fetch "^3.3.2" + tslib "^2.6.2" + +"@polkadot/x-global@12.6.2", "@polkadot/x-global@^12.6.2": + version "12.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-12.6.2.tgz#31d4de1c3d4c44e4be3219555a6d91091decc4ec" + integrity sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g== + dependencies: + tslib "^2.6.2" + +"@polkadot/x-randomvalues@12.6.2": + version "12.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-12.6.2.tgz#13fe3619368b8bf5cb73781554859b5ff9d900a2" + integrity sha512-Vr8uG7rH2IcNJwtyf5ebdODMcr0XjoCpUbI91Zv6AlKVYOGKZlKLYJHIwpTaKKB+7KPWyQrk4Mlym/rS7v9feg== + dependencies: + "@polkadot/x-global" "12.6.2" + tslib "^2.6.2" + +"@polkadot/x-textdecoder@12.6.2": + version "12.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz#b86da0f8e8178f1ca31a7158257e92aea90b10e4" + integrity sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w== + dependencies: + "@polkadot/x-global" "12.6.2" + tslib "^2.6.2" + +"@polkadot/x-textencoder@12.6.2": + version "12.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz#81d23bd904a2c36137a395c865c5fefa21abfb44" + integrity sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw== + dependencies: + "@polkadot/x-global" "12.6.2" + tslib "^2.6.2" + +"@polkadot/x-ws@^12.6.2": + version "12.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-ws/-/x-ws-12.6.2.tgz#b99094d8e53a03be1de903d13ba59adaaabc767a" + integrity sha512-cGZWo7K5eRRQCRl2LrcyCYsrc3lRbTlixZh3AzgU8uX4wASVGRlNWi/Hf4TtHNe1ExCDmxabJzdIsABIfrr7xw== + dependencies: + "@polkadot/x-global" "12.6.2" + tslib "^2.6.2" + ws "^8.15.1" + +"@scure/base@^1.1.1", "@scure/base@^1.1.5": + version "1.1.6" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.6.tgz#8ce5d304b436e4c84f896e0550c83e4d88cb917d" + integrity sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g== + +"@substrate/connect-extension-protocol@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@substrate/connect-extension-protocol/-/connect-extension-protocol-2.0.0.tgz#badaa6e6b5f7c7d56987d778f4944ddb83cd9ea7" + integrity sha512-nKu8pDrE3LNCEgJjZe1iGXzaD6OSIDD4Xzz/yo4KO9mQ6LBvf49BVrt4qxBFGL6++NneLiWUZGoh+VSd4PyVIg== + +"@substrate/connect-known-chains@^1.1.1": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@substrate/connect-known-chains/-/connect-known-chains-1.1.4.tgz#1b0b4b19c7bd0c1b3ed6f567a22e9fb9c42b8e64" + integrity sha512-iT+BdKqvKl/uBLd8BAJysFM1BaMZXRkaXBP2B7V7ob/EyNs5h0EMhTVbO6MJxV/IEOg5OKsyl6FUqQK7pKnqyw== + +"@substrate/connect@0.8.8": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@substrate/connect/-/connect-0.8.8.tgz#80879f2241e2bd4f24a9aa25d7997fd91a5e68e3" + integrity sha512-zwaxuNEVI9bGt0rT8PEJiXOyebLIo6QN1SyiAHRPBOl6g3Sy0KKdSN8Jmyn++oXhVRD8aIe75/V8ZkS81T+BPQ== + dependencies: + "@substrate/connect-extension-protocol" "^2.0.0" + "@substrate/connect-known-chains" "^1.1.1" + "@substrate/light-client-extension-helpers" "^0.0.4" + smoldot "2.0.22" + +"@substrate/light-client-extension-helpers@^0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@substrate/light-client-extension-helpers/-/light-client-extension-helpers-0.0.4.tgz#a5958d5c1aac7df69f55bd90991aa935500f8124" + integrity sha512-vfKcigzL0SpiK+u9sX6dq2lQSDtuFLOxIJx2CKPouPEHIs8C+fpsufn52r19GQn+qDhU8POMPHOVoqLktj8UEA== + dependencies: + "@polkadot-api/client" "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + "@polkadot-api/json-rpc-provider" "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + "@polkadot-api/json-rpc-provider-proxy" "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + "@polkadot-api/substrate-client" "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0" + "@substrate/connect-extension-protocol" "^2.0.0" + "@substrate/connect-known-chains" "^1.1.1" + rxjs "^7.8.1" + +"@substrate/ss58-registry@^1.44.0": + version "1.47.0" + resolved "https://registry.yarnpkg.com/@substrate/ss58-registry/-/ss58-registry-1.47.0.tgz#99b11fd3c16657f5eae483b3df7c545ca756d1fc" + integrity sha512-6kuIJedRcisUJS2pgksEH2jZf3hfSIVzqtFzs/AyjTW3ETbMg5q1Bb7VWa0WYaT6dTrEXp/6UoXM5B9pSIUmcw== + +"@types/bn.js@^5.1.5": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" + integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== + dependencies: + "@types/node" "*" + +"@types/node@*": + version "20.12.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.7.tgz#04080362fa3dd6c5822061aa3124f5c152cff384" + integrity sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg== + dependencies: + undici-types "~5.26.4" + +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== + +data-uri-to-buffer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== + +debug@^4.1.0: + 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" + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + +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== + +mock-socket@^9.3.1: + version "9.3.1" + resolved "https://registry.yarnpkg.com/mock-socket/-/mock-socket-9.3.1.tgz#24fb00c2f573c84812aa4a24181bb025de80cc8e" + integrity sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw== + +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== + +nock@^13.5.0: + version "13.5.4" + resolved "https://registry.yarnpkg.com/nock/-/nock-13.5.4.tgz#8918f0addc70a63736170fef7106a9721e0dc479" + integrity sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw== + dependencies: + debug "^4.1.0" + json-stringify-safe "^5.0.1" + propagate "^2.0.0" + +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + +node-fetch@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" + integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + +propagate@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" + integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== + +rxjs@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +scale-ts@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/scale-ts/-/scale-ts-1.6.0.tgz#e9641093c5a9e50f964ddb1607139034e3e932e9" + integrity sha512-Ja5VCjNZR8TGKhUumy9clVVxcDpM+YFjAnkMuwQy68Hixio3VRRvWdE3g8T/yC+HXA0ZDQl2TGyUmtmbcVl40Q== + +smoldot@2.0.22: + version "2.0.22" + resolved "https://registry.yarnpkg.com/smoldot/-/smoldot-2.0.22.tgz#1e924d2011a31c57416e79a2b97a460f462a31c7" + integrity sha512-B50vRgTY6v3baYH6uCgL15tfaag5tcS2o/P5q1OiXcKGv1axZDfz2dzzMuIkVpyMR2ug11F6EAtQlmYBQd292g== + dependencies: + ws "^8.8.1" + +tslib@^2.1.0, tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +typescript@^5.4.5: + version "5.4.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +web-streams-polyfill@^3.0.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== + +ws@^8.15.1, ws@^8.8.1: + version "8.16.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" + integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== diff --git a/scripts/relayer/chains/test-1.json b/scripts/relayer/chains/test-1.json index c733b0309..9ec7eeee0 100644 --- a/scripts/relayer/chains/test-1.json +++ b/scripts/relayer/chains/test-1.json @@ -5,11 +5,11 @@ "chain-id": "test-1", "rpc-addr": "http://localhost:16657", "grpc-addr": "", - "account-prefix": "centauri", + "account-prefix": "pica", "keyring-backend": "test", - "default-denom": "stake", + "default-denom": "ppica", "gas-adjustment": 1.5, - "gas-prices": "1stake", + "gas-prices": "100ppica", "coin-type": 118, "debug": true, "timeout": "10s", diff --git a/scripts/relayer/chains/test-2.json b/scripts/relayer/chains/test-2.json index f5d1c5d3e..dbea32fa3 100644 --- a/scripts/relayer/chains/test-2.json +++ b/scripts/relayer/chains/test-2.json @@ -5,11 +5,11 @@ "chain-id": "test-2", "rpc-addr": "http://localhost:26657", "grpc-addr": "", - "account-prefix": "centauri", + "account-prefix": "pica", "keyring-backend": "test", - "default-denom": "stake", + "default-denom": "ppica", "gas-adjustment": 1.5, - "gas-prices": "100stake", + "gas-prices": "100ppica", "coin-type": 118, "debug": true, "timeout": "10s", diff --git a/scripts/relayer/relayer-init.sh b/scripts/relayer/relayer-init.sh old mode 100644 new mode 100755 diff --git a/scripts/relayer_hyperspace/cleanup.sh b/scripts/relayer_hyperspace/cleanup.sh new file mode 100755 index 000000000..e6f33d205 --- /dev/null +++ b/scripts/relayer_hyperspace/cleanup.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +echo "kill composable node" +pkill -f picad +rm -rf mytestnet + + +echo "Cleanign up devnet-picasso containers..." +# The image name you want to stop containers for +IMAGE_NAME="composablefi/devnet-picasso" + +# Find the container ID(s) for containers running this image +CONTAINER_IDS=$(docker ps --filter "ancestor=$IMAGE_NAME" --format "{{.ID}}") + +# Stop the container(s) +for ID in $CONTAINER_IDS; do + echo "Stopping container $ID..." + docker stop $ID +done + +echo "Cleanup complete." \ No newline at end of file diff --git a/scripts/relayer_hyperspace/config-chain-a.toml b/scripts/relayer_hyperspace/config-chain-a.toml new file mode 100644 index 000000000..7ae746d59 --- /dev/null +++ b/scripts/relayer_hyperspace/config-chain-a.toml @@ -0,0 +1,13 @@ +type = "parachain" +name = "picasso_dev" +para_id = 2001 +parachain_rpc_url = "ws://127.0.0.1:9988" +relay_chain_rpc_url = "ws://127.0.0.1:9944" +client_id = "08-wasm-0" +connection_id = "connection-0" +commitment_prefix = "0x6962632f" +private_key = "//Alice" +ss58_version = 49 +channel_whitelist = [["channel-0", "transfer"], ["channel-0", "transfer"], ["channel-0", "transfer"]] +finality_protocol = "Grandpa" +key_type = "sr25519" diff --git a/scripts/relayer_hyperspace/config-chain-b.toml b/scripts/relayer_hyperspace/config-chain-b.toml new file mode 100644 index 000000000..532aa4864 --- /dev/null +++ b/scripts/relayer_hyperspace/config-chain-b.toml @@ -0,0 +1,20 @@ +type = "cosmos" +name = "centauri" +rpc_url = "http://127.0.0.1:26657/" +grpc_url = "http://127.0.0.1:9090/" +websocket_url = "ws://127.0.0.1:26657/websocket" +chain_id = "centauri-dev" +client_id = "07-tendermint-0" +connection_id = "connection-0" +account_prefix = "pica" +fee_denom = "ppica" +fee_amount = "9223372036854776" +gas_limit = 9223372036854775806 +store_prefix = "ibc" +max_tx_size = 20000000 +wasm_code_id = "9d5056f2b551213094a03b788db80274445175bae78c8fede38bf25a2ddc84bc" +channel_whitelist = [["channel-0", "transfer"], ["channel-0", "transfer"], ["channel-0", "transfer"]] +mnemonic = "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" +skip_optional_client_updates = false +max_packets_to_process = 50 +skip_tokens_list = [] diff --git a/scripts/relayer_hyperspace/config-core.toml b/scripts/relayer_hyperspace/config-core.toml new file mode 100644 index 000000000..a6bcac3d0 --- /dev/null +++ b/scripts/relayer_hyperspace/config-core.toml @@ -0,0 +1 @@ +prometheus_endpoint = "https://127.0.0.1" \ No newline at end of file diff --git a/scripts/relayer_hyperspace/config-relayer.toml b/scripts/relayer_hyperspace/config-relayer.toml new file mode 100644 index 000000000..1cad706fb --- /dev/null +++ b/scripts/relayer_hyperspace/config-relayer.toml @@ -0,0 +1,15 @@ + +# create client +../composable-ibc/target/release/hyperspace create-clients --config-a ./scripts/relayer_hyperspace/config-chain-a.toml --config-b ./scripts/relayer_hyperspace/config-chain-b.toml --config-core ./scripts/relayer_hyperspace/config.toml --delay-period 10 + +# # create connection +# ../composable-ibc/target/release/hyperspace create-connection --config-a ./scripts/relayer_hyperspace/config-chain-a.toml --config-b ./scripts/relayer_hyperspace/config-chain-b.toml --config-core ./scripts/relayer_hyperspace/config.toml --delay-period 1 --port-id transfer --order unordered + +# # create channel +# ../composable-ibc/target/release/hyperspace create-channel --config-a ./scripts/relayer_hyperspace/config-chain-a.toml --config-b ./scripts/relayer_hyperspace/config-chain-b.toml --config-core ./scripts/relayer_hyperspace/config.toml --delay-period 0 --port-id tranfer --order unordered --version ics20-1 + +# # start relayer +# ../composable-ibc/target/release/hyperspace relay --config-a ./scripts/relayer_hyperspace/config-chain-a.toml --config-b ./scripts/relayer_hyperspace/config-chain-b.toml --config-core ./scripts/relayer_hyperspace/config.toml --delay-period 1 --port-id transfer --order unordered --version ics20-1 + +# # send ibc +# centaurid tx ibc-transfer transfer transfer channel-0 --chain-id test-1 5yNZjX24n2eg7W6EVamaTXNQbWCwchhThEaSWB7V3GRjtHeL 100stake \ No newline at end of file diff --git a/scripts/relayer_hyperspace/create-channel.sh b/scripts/relayer_hyperspace/create-channel.sh new file mode 100755 index 000000000..bf11e563d --- /dev/null +++ b/scripts/relayer_hyperspace/create-channel.sh @@ -0,0 +1,2 @@ + +RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info /home/kien6034/notional/composable-ibc/target/release/hyperspace create-channel --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 --port-id transfer --version ics20-1 --order unordered \ No newline at end of file diff --git a/scripts/relayer_hyperspace/create-clients.sh b/scripts/relayer_hyperspace/create-clients.sh new file mode 100755 index 000000000..30cfc4a39 --- /dev/null +++ b/scripts/relayer_hyperspace/create-clients.sh @@ -0,0 +1,2 @@ + +RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info /home/kien6034/notional/composable-ibc/target/release/hyperspace create-clients --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 \ No newline at end of file diff --git a/scripts/relayer_hyperspace/create-connections.sh b/scripts/relayer_hyperspace/create-connections.sh new file mode 100755 index 000000000..e64c340c2 --- /dev/null +++ b/scripts/relayer_hyperspace/create-connections.sh @@ -0,0 +1 @@ +RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info /home/kien6034/notional/composable-ibc/target/release/hyperspace create-connection --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 \ No newline at end of file diff --git a/scripts/relayer_hyperspace/start-relay.sh b/scripts/relayer_hyperspace/start-relay.sh new file mode 100755 index 000000000..784df00b5 --- /dev/null +++ b/scripts/relayer_hyperspace/start-relay.sh @@ -0,0 +1,2 @@ + +RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info /home/kien6034/notional/composable-ibc/target/release/hyperspace relay --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 \ No newline at end of file diff --git a/scripts/relayer_hyperspace/v47/create-clients.sh b/scripts/relayer_hyperspace/v47/create-clients.sh new file mode 100755 index 000000000..8f18af593 --- /dev/null +++ b/scripts/relayer_hyperspace/v47/create-clients.sh @@ -0,0 +1,2 @@ + +RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info /home/kien6034/notional/composable-ibc-old/bin/hyperspace create-clients --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 diff --git a/scripts/relayer_hyperspace/v47/create-connection.sh b/scripts/relayer_hyperspace/v47/create-connection.sh new file mode 100755 index 000000000..3463b74ab --- /dev/null +++ b/scripts/relayer_hyperspace/v47/create-connection.sh @@ -0,0 +1,2 @@ + +RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info /home/kien6034/notional/composable-ibc-old/bin/hyperspace create-connection --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 diff --git a/scripts/run-node.sh b/scripts/run-node.sh index c544a6398..eb685ff8c 100755 --- a/scripts/run-node.sh +++ b/scripts/run-node.sh @@ -1,86 +1,81 @@ #!/bin/bash +KEY="mykey" +KEY1="mykey1" +CHAINID="centauri-dev" +MONIKER="localtestnet" +KEYALGO="secp256k1" +KEYRING="test" +LOGLEVEL="info" BINARY=$1 -CONTINUE=${CONTINUE:-"false"} +# to trace evm +#TRACE="--trace" +TRACE="" + +echo "runnode" + HOME_DIR=mytestnet -ENV=${ENV:-""} +DENOM=ppica + +# remove existing daemon +rm -rf $HOME_DIR + +if [ ! -x "$(command -v $BINARY)" ]; then + echo "Error: Binary $BINARY is not executable or not found." + exit 1 +fi + if [ "$CONTINUE" == "true" ]; then + echo "\n ->> continuing from previous state" $BINARY start --home $HOME_DIR --log_level debug exit 0 fi -rm -rf mytestnet -pkill centaurid - -# check DENOM is set. If not, set to upica -DENOM=${2:-upica} - -COMMISSION_RATE=0.01 -COMMISSION_MAX_RATE=0.02 - -SED_BINARY=sed -# check if this is OS X -if [[ "$OSTYPE" == "darwin"* ]]; then - # check if gsed is installed - if ! command -v gsed &> /dev/null - then - echo "gsed could not be found. Please install it with 'brew install gnu-sed'" - exit - else - SED_BINARY=gsed - fi -fi -# check BINARY is set. If not, build picad and set BINARY -if [ -z "$BINARY" ]; then - make build - BINARY=build/picad -fi +$BINARY config keyring-backend $KEYRING +$BINARY config chain-id $CHAINID -CHAIN_ID="localpica" -KEYRING="test" -KEY="test0" -KEY1="test1" -KEY2="test2" -# Function updates the config based on a jq argument as a string +# if $KEY exists it should be deleted +echo "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" | $BINARY keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO --recover --home $HOME_DIR +echo "bottom loan skill merry east cradle onion journey palm apology verb edit desert impose absurd oil bubble sweet glove shallow size build burst effort" | $BINARY keys add $KEY1 --keyring-backend $KEYRING --algo $KEYALGO --recover --home $HOME_DIR + +$BINARY init $CHAINID --chain-id $CHAINID --default-denom "ppica" --home $HOME_DIR >/dev/null 2>&1 + update_test_genesis () { # update_test_genesis '.consensus_params["block"]["max_gas"]="100000000"' - cat $HOME_DIR/config/genesis.json | jq "$1" > $HOME_DIR/config/tmp_genesis.json && mv $HOME_DIR/config/tmp_genesis.json $HOME_DIR/config/genesis.json + cat $HOME_DIR/config/genesis.json | jq "$1" > $HOME_DIR/config/tmp_genesis.json && cp $HOME_DIR/config/tmp_genesis.json $HOME_DIR/config/genesis.json } -$BINARY init --chain-id $CHAIN_ID moniker --home $HOME_DIR +# Allocate genesis accounts (cosmos formatted addresses) +$BINARY add-genesis-account $KEY 100000000000000000000000000ppica --keyring-backend $KEYRING --home $HOME_DIR +$BINARY add-genesis-account $KEY1 100000000000000000000000000ppica --keyring-backend $KEYRING --home $HOME_DIR -$BINARY keys add $KEY --keyring-backend $KEYRING --home $HOME_DIR -$BINARY keys add $KEY1 --keyring-backend $KEYRING --home $HOME_DIR -$BINARY keys add $KEY2 --keyring-backend $KEYRING --home $HOME_DIR +# Sign genesis transaction +$BINARY gentx $KEY 10030009994127689ppica --keyring-backend $KEYRING --chain-id $CHAINID --home $HOME_DIR -# Allocate genesis accounts (cosmos formatted addresses) -$BINARY add-genesis-account $KEY "1000000000000000000000${DENOM}" --keyring-backend $KEYRING --home $HOME_DIR -$BINARY add-genesis-account $KEY1 "1000000000000000000000${DENOM}" --keyring-backend $KEYRING --home $HOME_DIR -$BINARY add-genesis-account $KEY2 "1000000000000000000000${DENOM}" --keyring-backend $KEYRING --home $HOME_DIR update_test_genesis '.app_state["gov"]["params"]["voting_period"]="20s"' +update_test_genesis '.app_state["gov"]["params"]["expedited_voting_period"]="10s"' update_test_genesis '.app_state["mint"]["params"]["mint_denom"]="'$DENOM'"' -update_test_genesis '.app_state["gov"]["params"]["min_deposit"]=[{"denom":"'$DENOM'","amount": "1000000"}]' +update_test_genesis '.app_state["gov"]["params"]["min_deposit"]=[{"denom":"'$DENOM'","amount": "1"}]' update_test_genesis '.app_state["crisis"]["constant_fee"]={"denom":"'$DENOM'","amount":"1000"}' -update_test_genesis '.app_state["staking"]["params"]["bond_denom"]="'$DENOM'"' - -# enable rest server and swagger -$SED_BINARY -i '0,/enable = false/s//enable = true/' $HOME_DIR/config/app.toml -$SED_BINARY -i 's/swagger = false/swagger = true/' $HOME_DIR/config/app.toml -$SED_BINARY -i -e 's/enabled-unsafe-cors = false/enabled-unsafe-cors = true/g' $HOME_DIR/config/app.toml -$SED_BINARY -i 's/minimum-gas-prices = "0.25upica"/minimum-gas-prices = "0.0upica"/' $HOME_DIR/config/app.toml - - -# Sign genesis transaction -$BINARY gentx $KEY "1000000000000000000000${DENOM}" --commission-rate=$COMMISSION_RATE --commission-max-rate=$COMMISSION_MAX_RATE --keyring-backend $KEYRING --chain-id $CHAIN_ID --home $HOME_DIR # Collect genesis tx $BINARY collect-gentxs --home $HOME_DIR # Run this to ensure everything worked and that the genesis file is setup correctly $BINARY validate-genesis --home $HOME_DIR -$BINARY start --home $HOME_DIR +if [[ $1 == "pending" ]]; then + echo "pending mode is on, please wait for the first block committed." +fi + +# update request max size so that we can upload the light client +# '' -e is a must have params on mac, if use linux please delete before run +sed -i'' -e 's/max_body_bytes = /max_body_bytes = 1/g' $HOME_DIR/config/config.toml +sed -i'' -e 's/max_tx_bytes = 1048576/max_tx_bytes = 10000000/g' $HOME_DIR/config/config.toml + + +screen -L -dmS node1 $BINARY start --rpc.unsafe --rpc.laddr tcp://0.0.0.0:26657 --pruning=nothing --minimum-gas-prices=0.001ppica --home=$HOME_DIR --log_level debug --trace --with-tendermint=true --transport=socket --grpc.enable=true --grpc-web.enable=false --api.enable=true --p2p.pex=false \ No newline at end of file diff --git a/scripts/test-upgrade.sh b/scripts/test-upgrade.sh index 2bbbe23af..0201d5bca 100755 --- a/scripts/test-upgrade.sh +++ b/scripts/test-upgrade.sh @@ -3,12 +3,15 @@ # the upgrade is a fork, "true" otherwise FORK=${FORK:-"false"} -OLD_VERSION=v6.5.4 +OLD_VERSION=v6.6.41 UPGRADE_WAIT=${UPGRADE_WAIT:-20} HOME=mytestnet ROOT=$(pwd) -DENOM=upica +DENOM=ppica CHAIN_ID=localpica +SOFTWARE_UPGRADE_NAME="v7_0_1" +ADDITIONAL_PRE_SCRIPTS="" +ADDITIONAL_AFTER_SCRIPTS="" SOFTWARE_UPGRADE_NAME="v6_6_1" ADDITIONAL_PRE_SCRIPTS="./scripts/upgrade/v_6_4_8/pre-script.sh" ADDITIONAL_AFTER_SCRIPTS="./scripts/upgrade/v_6_4_8/post-script.sh" @@ -32,7 +35,7 @@ then fi # reinstall old binary -if [ $# -eq 1 ] && [ $1 == "--reinstall-old" ] || ! command -v _build/old/centaurid &> /dev/null; then +if [ $# -eq 1 ] && [ $1 == "--reinstall-old" ] || ! command -v _build/old/picad &> /dev/null; then cd ./_build/composable-cosmos-${OLD_VERSION:1} GOBIN="$ROOT/_build/old" go install -mod=readonly ./... cd ../.. @@ -48,9 +51,9 @@ fi # run old node if [[ "$OSTYPE" == "darwin"* ]]; then echo "running old node" - screen -L -dmS node1 bash scripts/localnode.sh _build/old/centaurid $DENOM --Logfile $HOME/log-screen.txt + screen -L -dmS node1 bash scripts/localnode-upgrade.sh _build/old/picad $DENOM --Logfile $HOME/log-screen.txt else - screen -L -Logfile $HOME/log-screen.txt -dmS node1 bash scripts/localnode.sh _build/old/centaurid $DENOM + screen -L -Logfile $HOME/log-screen.txt -dmS node1 bash scripts/localnode-upgrade.sh _build/old/picad $DENOM fi sleep 5 # wait for note to start @@ -63,7 +66,7 @@ if [ ! -z "$ADDITIONAL_PRE_SCRIPTS" ]; then # check if SCRIPT is a file if [ -f "$SCRIPT" ]; then echo "executing additional pre scripts from $SCRIPT" - source $SCRIPT _build/old/centaurid + source $SCRIPT _build/old/picad echo "CONTRACT_ADDRESS = $CONTRACT_ADDRESS" sleep 5 else @@ -76,7 +79,7 @@ run_fork () { echo "forking" while true; do - BLOCK_HEIGHT=$(./_build/old/centaurid status | jq '.SyncInfo.latest_block_height' -r) + BLOCK_HEIGHT=$(./_build/old/picad status | jq '.SyncInfo.latest_block_height' -r) # if BLOCK_HEIGHT is not empty if [ ! -z "$BLOCK_HEIGHT" ]; then echo "BLOCK_HEIGHT = $BLOCK_HEIGHT" @@ -92,7 +95,7 @@ run_upgrade () { echo -e "\n\n=> =>start upgrading" # Get upgrade height, 12 block after (6s) - STATUS_INFO=($(./_build/old/centaurid status --home $HOME | jq -r '.NodeInfo.network,.SyncInfo.latest_block_height')) + STATUS_INFO=($(./_build/old/picad status --home $HOME | jq -r '.NodeInfo.network,.SyncInfo.latest_block_height')) UPGRADE_HEIGHT=$((STATUS_INFO[1] + 20)) echo "UPGRADE_HEIGHT = $UPGRADE_HEIGHT" @@ -105,33 +108,34 @@ run_upgrade () { } }') + echo "submit upgrade" - ./_build/old/centaurid tx gov submit-legacy-proposal software-upgrade "$SOFTWARE_UPGRADE_NAME" --upgrade-height $UPGRADE_HEIGHT --upgrade-info "$UPGRADE_INFO" --title "upgrade" --description "upgrade" --from test1 --keyring-backend test --chain-id $CHAIN_ID --home $HOME -y > /dev/null + ./_build/old/picad tx gov submit-legacy-proposal software-upgrade "$SOFTWARE_UPGRADE_NAME" --upgrade-height $UPGRADE_HEIGHT --upgrade-info "$UPGRADE_INFO" --title "upgrade" --description "upgrade" --from=test1 --keyring-backend test --chain-id $CHAIN_ID --home $HOME -y sleep $SLEEP_TIME - ./_build/old/centaurid tx gov deposit 1 "20000000${DENOM}" --from test1 --keyring-backend test --chain-id $CHAIN_ID --home $HOME -y > /dev/null + ./_build/old/picad tx gov deposit 1 "20000000${DENOM}" --from test1 --keyring-backend test --chain-id $CHAIN_ID --home $HOME -y > /dev/null sleep $SLEEP_TIME - ./_build/old/centaurid tx gov vote 1 yes --from test0 --keyring-backend test --chain-id $CHAIN_ID --home $HOME -y > /dev/null + ./_build/old/picad tx gov vote 1 yes --from test0 --keyring-backend test --chain-id $CHAIN_ID --home $HOME -y > /dev/null sleep $SLEEP_TIME - ./_build/old/centaurid tx gov vote 1 yes --from test1 --keyring-backend test --chain-id $CHAIN_ID --home $HOME -y > /dev/null + ./_build/old/picad tx gov vote 1 yes --from test1 --keyring-backend test --chain-id $CHAIN_ID --home $HOME -y > /dev/null sleep $SLEEP_TIME # determine block_height to halt while true; do - BLOCK_HEIGHT=$(./_build/old/centaurid status | jq '.SyncInfo.latest_block_height' -r) + BLOCK_HEIGHT=$(./_build/old/picad status | jq '.SyncInfo.latest_block_height' -r) if [ $BLOCK_HEIGHT = "$UPGRADE_HEIGHT" ]; then - # assuming running only 1 centaurid + # assuming running only 1 picad echo "BLOCK HEIGHT = $UPGRADE_HEIGHT REACHED, KILLING OLD ONE" - pkill centaurid + pkill picad break else - ./_build/old/centaurid q gov proposal 1 --output=json | jq ".status" + ./_build/old/picad q gov proposal 1 --output=json | jq ".status" echo "BLOCK_HEIGHT = $BLOCK_HEIGHT" sleep 1 fi @@ -151,9 +155,9 @@ sleep 1 # run new node echo -e "\n\n=> =>continue running nodes after upgrade" if [[ "$OSTYPE" == "darwin"* ]]; then - CONTINUE="true" screen -L -dmS picad bash scripts/localnode.sh _build/new/picad $DENOM + CONTINUE="true" screen -L -dmS picad bash scripts/localnode-upgrade.sh _build/new/picad $DENOM else - CONTINUE="true" screen -L -dmS picad bash scripts/localnode.sh _build/new/picad $DENOM + CONTINUE="true" screen -L -dmS picad bash scripts/localnode-upgrade.sh _build/new/picad $DENOM fi sleep 5 diff --git a/scripts/testnode.sh b/scripts/testnode.sh index 4e5b67216..44fc57341 100755 --- a/scripts/testnode.sh +++ b/scripts/testnode.sh @@ -1,7 +1,8 @@ #!/bin/bash +BINARY=$1 KEY="mykey" -CHAINID="test-1" +CHAINID="localpica" MONIKER="localtestnet" KEYALGO="secp256k1" KEYRING="test" @@ -17,13 +18,13 @@ DENOM=${2:-ppica} # remove existing daemon rm -rf ~/.banksy* -picad config keyring-backend $KEYRING -picad config chain-id $CHAINID +# $BINARY config keyring-backend $KEYRING +# $BINARY config chain-id $CHAINID # if $KEY exists it should be deleted -echo "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" | picad keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO --recover +echo "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" | $BINARY keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO --recover -picad init $MONIKER --chain-id $CHAINID +$BINARY init $MONIKER --chain-id $CHAINID > /dev/null 2>&1 update_test_genesis () { # update_test_genesis '.consensus_params["block"]["max_gas"]="100000000"' @@ -31,22 +32,24 @@ update_test_genesis () { } # Allocate genesis accounts (cosmos formatted addresses) -picad add-genesis-account $KEY 100000000000000000000000000ppica --keyring-backend $KEYRING +$BINARY genesis add-genesis-account $KEY 100000000000000000000000000ppica --keyring-backend $KEYRING +$BINARY add-genesis-account centauri1hj5fveer5cjtn4wd6wstzugjfdxzl0xpzxlwgs "1000000000000000000000${DENOM}" --keyring-backend $KEYRING --home $HOME_DIR + # Sign genesis transaction -picad gentx $KEY 10030009994127689ppica --keyring-backend $KEYRING --chain-id $CHAINID +$BINARY gentx $KEY 1000000000000000000000ppica --keyring-backend $KEYRING --chain-id $CHAINID update_test_genesis '.app_state["gov"]["params"]["voting_period"]="20s"' update_test_genesis '.app_state["mint"]["params"]["mint_denom"]="'$DENOM'"' -update_test_genesis '.app_state["gov"]["params"]["min_deposit"]=[{"denom":"'$DENOM'","amount": "1"}]' +update_test_genesis '.app_state["gov"]["params"]["min_deposit"]=[{"denom":"'$DENOM'","amount": "0"}]' update_test_genesis '.app_state["crisis"]["constant_fee"]={"denom":"'$DENOM'","amount":"1000"}' update_test_genesis '.app_state["staking"]["params"]["bond_denom"]="'$DENOM'"' # Collect genesis tx -picad collect-gentxs +$BINARY collect-gentxs # Run this to ensure everything worked and that the genesis file is setup correctly -picad validate-genesis +$BINARY validate-genesis if [[ $1 == "pending" ]]; then echo "pending mode is on, please wait for the first block committed." @@ -57,4 +60,8 @@ fi sed -i'' -e 's/max_body_bytes = /max_body_bytes = 1/g' ~/.banksy/config/config.toml # Start the node (remove the --pruning=nothing flag if historical queries are not needed) -picad start --pruning=nothing --minimum-gas-prices=0.0001ppica --rpc.laddr tcp://0.0.0.0:26657 +<<<<<<< HEAD +$BINARY start --pruning=nothing --minimum-gas-prices=0.0001ppica --rpc.laddr tcp://0.0.0.0:26657 +======= +# centaurid start --pruning=nothing --minimum-gas-prices=0.0001ppica --rpc.laddr tcp://0.0.0.0:26657 +>>>>>>> develop2 diff --git a/scripts/tests/ibc-hooks/counter/Cargo.toml b/scripts/tests/ibc-hooks/counter/Cargo.toml new file mode 100644 index 000000000..f164afc0e --- /dev/null +++ b/scripts/tests/ibc-hooks/counter/Cargo.toml @@ -0,0 +1,43 @@ +[package] +name = "counter" +description = "Cosmwasm counter dapp, with permissions for testing Osmosis wasmhooks" +version = "0.1.0" +authors = ["osmosis contributors"] +edition = "2021" + +exclude = [ + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "contract.wasm", + "hash.txt", +] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +crate-type = ["cdylib", "rlib"] + +[features] +# for more explicit tests, cargo test --features=backtraces +backtraces = ["cosmwasm-std/backtraces"] +# use library feature to disable all instantiate/execute/query exports +library = [] + +[package.metadata.scripts] +optimize = """docker run --rm -v "$(pwd)":/code \ + --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \ + --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \ + cosmwasm/rust-optimizer:0.12.6 +""" + +[dependencies] +cosmwasm-schema = "1.1.3" +cosmwasm-std = "1.1.3" +cosmwasm-storage = "1.1.3" +cw-storage-plus = "0.16.0" +cw2 = "0.16.0" +schemars = "0.8.10" +serde = { version = "1.0.145", default-features = false, features = ["derive"] } +thiserror = { version = "1.0.31" } + +[dev-dependencies] +cw-multi-test = "0.16.0" diff --git a/scripts/tests/ibc-hooks/counter/README.md b/scripts/tests/ibc-hooks/counter/README.md new file mode 100644 index 000000000..f4394fe87 --- /dev/null +++ b/scripts/tests/ibc-hooks/counter/README.md @@ -0,0 +1,11 @@ +# Counter contract from [Osmosis Labs](https://github.com/osmosis-labs/osmosis/commit/64393a14e18b2562d72a3892eec716197a3716c7) + +This contract is a modification of the standard cosmwasm `counter` contract. +Namely, it tracks a counter, _by sender_. +This is a better way to test wasmhooks. + +This contract tracks any funds sent to it by adding it to the state under the `sender` key. + +This way we can verify that, independently of the sender, the funds will end up under the +`WasmHooksModuleAccount` address when the contract is executed via an IBC send that goes +through the wasmhooks module. diff --git a/scripts/tests/ibc-hooks/counter/artifacts/checksums.txt b/scripts/tests/ibc-hooks/counter/artifacts/checksums.txt new file mode 100644 index 000000000..1f542142d --- /dev/null +++ b/scripts/tests/ibc-hooks/counter/artifacts/checksums.txt @@ -0,0 +1 @@ +c0e7a3b40d9710f6f72322293ba5cd871714008d9accd9a91c0fb08272609054 counter.wasm diff --git a/scripts/tests/ibc-hooks/counter/artifacts/checksums_intermediate.txt b/scripts/tests/ibc-hooks/counter/artifacts/checksums_intermediate.txt new file mode 100644 index 000000000..0394e5fc2 --- /dev/null +++ b/scripts/tests/ibc-hooks/counter/artifacts/checksums_intermediate.txt @@ -0,0 +1 @@ +bffb3256d4fd5668e497ae5671844ef3dcdf1a5f2594747b894dfc02e243ab0e ./target/wasm32-unknown-unknown/release/counter.wasm diff --git a/scripts/tests/ibc-hooks/counter/artifacts/counter.wasm b/scripts/tests/ibc-hooks/counter/artifacts/counter.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e3e5b53bd76f861b707222cd0cca618845dfe52b GIT binary patch literal 177531 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

T#-=AM8e(J99=S3e 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

$zt3zc2LPj&Gl2xh=We`M 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 Result { + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + let initial_counter = Counter { + count: msg.count, + total_funds: vec![], + owner: info.sender.clone(), + }; + COUNTERS.save(deps.storage, info.sender.clone(), &initial_counter)?; + + Ok(Response::new() + .add_attribute("method", "instantiate") + .add_attribute("owner", info.sender) + .add_attribute("count", msg.count.to_string())) +} + +pub mod utils { + use cosmwasm_std::Addr; + + use super::*; + + pub fn update_counter( + deps: DepsMut, + sender: Addr, + update_counter: &dyn Fn(&Option) -> i32, + update_funds: &dyn Fn(&Option) -> Vec, + ) -> Result { + COUNTERS + .update( + deps.storage, + sender.clone(), + |state| -> Result<_, ContractError> { + match state { + None => Ok(Counter { + count: update_counter(&None), + total_funds: update_funds(&None), + owner: sender, + }), + Some(counter) => Ok(Counter { + count: update_counter(&Some(counter.clone())), + total_funds: update_funds(&Some(counter)), + owner: sender, + }), + } + }, + ) + .map(|_r| true) + } +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + _env: Env, + info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + match msg { + ExecuteMsg::Increment {} => execute::increment(deps, info), + ExecuteMsg::Reset { count } => execute::reset(deps, info, count), + } +} + +pub mod execute { + use super::*; + + pub fn increment(deps: DepsMut, info: MessageInfo) -> Result { + utils::update_counter( + deps, + info.sender, + &|counter| match counter { + None => 0, + Some(counter) => counter.count + 1, + }, + &|counter| match counter { + None => info.funds.clone(), + Some(counter) => naive_add_coins(&info.funds, &counter.total_funds), + }, + )?; + Ok(Response::new().add_attribute("action", "increment")) + } + + pub fn reset(deps: DepsMut, info: MessageInfo, count: i32) -> Result { + utils::update_counter(deps, info.sender, &|_counter| count, &|_counter| vec![])?; + Ok(Response::new().add_attribute("action", "reset")) + } +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result { + match msg { + SudoMsg::IBCLifecycleComplete(IBCLifecycleComplete::IBCAck { + channel: _, + sequence: _, + ack: _, + success, + }) => sudo::receive_ack(deps, env.contract.address, success), + SudoMsg::IBCLifecycleComplete(IBCLifecycleComplete::IBCTimeout { + channel: _, + sequence: _, + }) => sudo::ibc_timeout(deps, env.contract.address), + } +} + +pub mod sudo { + use cosmwasm_std::Addr; + + use super::*; + + pub fn receive_ack( + deps: DepsMut, + contract: Addr, + _success: bool, + ) -> Result { + utils::update_counter( + deps, + contract, + &|counter| match counter { + None => 1, + Some(counter) => counter.count + 1, + }, + &|_counter| vec![], + )?; + Ok(Response::new().add_attribute("action", "ack")) + } + + pub(crate) fn ibc_timeout(deps: DepsMut, contract: Addr) -> Result { + utils::update_counter( + deps, + contract, + &|counter| match counter { + None => 10, + Some(counter) => counter.count + 10, + }, + &|_counter| vec![], + )?; + Ok(Response::new().add_attribute("action", "timeout")) + } +} + +pub fn naive_add_coins(lhs: &Vec, rhs: &Vec) -> Vec { + // This is a naive, inneficient implementation of Vec addition. + // This shouldn't be used in production but serves our purpose for this + // testing contract + let mut coins: HashMap = HashMap::new(); + for coin in lhs { + coins.insert(coin.denom.clone(), coin.amount); + } + + for coin in rhs { + coins + .entry(coin.denom.clone()) + .and_modify(|e| *e += coin.amount) + .or_insert(coin.amount); + } + coins.iter().map(|(d, &a)| Coin::new(a.into(), d)).collect() +} + +#[test] +fn coin_addition() { + let c1 = vec![Coin::new(1, "a"), Coin::new(2, "b")]; + let c2 = vec![Coin::new(7, "a"), Coin::new(2, "c")]; + + let mut sum = naive_add_coins(&c1, &c1); + sum.sort_by(|a, b| a.denom.cmp(&b.denom)); + assert_eq!(sum, vec![Coin::new(2, "a"), Coin::new(4, "b")]); + + let mut sum = naive_add_coins(&c1, &c2); + sum.sort_by(|a, b| a.denom.cmp(&b.denom)); + assert_eq!( + sum, + vec![Coin::new(8, "a"), Coin::new(2, "b"), Coin::new(2, "c"),] + ); + + let mut sum = naive_add_coins(&c2, &c2); + sum.sort_by(|a, b| a.denom.cmp(&b.denom)); + assert_eq!(sum, vec![Coin::new(14, "a"), Coin::new(4, "c"),]); + + let mut sum = naive_add_coins(&c2, &c1); + sum.sort_by(|a, b| a.denom.cmp(&b.denom)); + assert_eq!( + sum, + vec![Coin::new(8, "a"), Coin::new(2, "b"), Coin::new(2, "c"),] + ); + + let mut sum = naive_add_coins(&vec![], &c2); + sum.sort_by(|a, b| a.denom.cmp(&b.denom)); + assert_eq!(sum, c2); + + let mut sum = naive_add_coins(&c2, &vec![]); + sum.sort_by(|a, b| a.denom.cmp(&b.denom)); + assert_eq!(sum, c2); +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { + match msg { + QueryMsg::GetCount { addr } => to_binary(&query::count(deps, addr)?), + QueryMsg::GetTotalFunds { addr } => to_binary(&query::total_funds(deps, addr)?), + } +} + +pub mod query { + use cosmwasm_std::Addr; + + use super::*; + + pub fn count(deps: Deps, addr: Addr) -> StdResult { + let state = COUNTERS.load(deps.storage, addr)?; + Ok(GetCountResponse { count: state.count }) + } + + pub fn total_funds(deps: Deps, addr: Addr) -> StdResult { + let state = COUNTERS.load(deps.storage, addr)?; + Ok(GetTotalFundsResponse { + total_funds: state.total_funds, + }) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; + use cosmwasm_std::Addr; + use cosmwasm_std::{coins, from_binary}; + + #[test] + fn proper_initialization() { + let mut deps = mock_dependencies(); + + let msg = InstantiateMsg { count: 17 }; + let info = mock_info("creator", &coins(1000, "earth")); + + // we can just call .unwrap() to assert this was a success + let res = instantiate(deps.as_mut(), mock_env(), info, msg).unwrap(); + assert_eq!(0, res.messages.len()); + + // it worked, let's query the state + let res = query( + deps.as_ref(), + mock_env(), + QueryMsg::GetCount { + addr: Addr::unchecked("creator"), + }, + ) + .unwrap(); + let value: GetCountResponse = from_binary(&res).unwrap(); + assert_eq!(17, value.count); + } + + #[test] + fn increment() { + let mut deps = mock_dependencies(); + + let msg = InstantiateMsg { count: 17 }; + let info = mock_info("creator", &coins(2, "token")); + let _res = instantiate(deps.as_mut(), mock_env(), info, msg).unwrap(); + + let msg = InstantiateMsg { count: 17 }; + let info = mock_info("someone-else", &coins(2, "token")); + let _res = instantiate(deps.as_mut(), mock_env(), info, msg).unwrap(); + + let info = mock_info("creator", &coins(2, "token")); + let msg = ExecuteMsg::Increment {}; + let _res = execute(deps.as_mut(), mock_env(), info, msg).unwrap(); + + // should increase counter by 1 + let res = query( + deps.as_ref(), + mock_env(), + QueryMsg::GetCount { + addr: Addr::unchecked("creator"), + }, + ) + .unwrap(); + let value: GetCountResponse = from_binary(&res).unwrap(); + assert_eq!(18, value.count); + + // Counter for someone else is not incremented + let res = query( + deps.as_ref(), + mock_env(), + QueryMsg::GetCount { + addr: Addr::unchecked("someone-else"), + }, + ) + .unwrap(); + let value: GetCountResponse = from_binary(&res).unwrap(); + assert_eq!(17, value.count); + } + + #[test] + fn reset() { + let mut deps = mock_dependencies(); + + let msg = InstantiateMsg { count: 17 }; + let info = mock_info("creator", &coins(2, "token")); + let _res = instantiate(deps.as_mut(), mock_env(), info, msg).unwrap(); + + // beneficiary can release it + let unauth_info = mock_info("anyone", &coins(2, "token")); + let msg = ExecuteMsg::Reset { count: 7 }; + let _res = execute(deps.as_mut(), mock_env(), unauth_info, msg); + + // should be 7 + let res = query( + deps.as_ref(), + mock_env(), + QueryMsg::GetCount { + addr: Addr::unchecked("anyone"), + }, + ) + .unwrap(); + let value: GetCountResponse = from_binary(&res).unwrap(); + assert_eq!(7, value.count); + + // only the original creator can reset the counter + let auth_info = mock_info("creator", &coins(2, "token")); + let msg = ExecuteMsg::Reset { count: 5 }; + let _res = execute(deps.as_mut(), mock_env(), auth_info, msg).unwrap(); + + // should now be 5 + let res = query( + deps.as_ref(), + mock_env(), + QueryMsg::GetCount { + addr: Addr::unchecked("creator"), + }, + ) + .unwrap(); + let value: GetCountResponse = from_binary(&res).unwrap(); + assert_eq!(5, value.count); + } + + #[test] + fn acks() { + let mut deps = mock_dependencies(); + let env = mock_env(); + let get_msg = QueryMsg::GetCount { + addr: Addr::unchecked(env.clone().contract.address), + }; + + // No acks + query(deps.as_ref(), env.clone(), get_msg.clone()).unwrap_err(); + + let msg = SudoMsg::ReceiveAck { + channel: format!("channel-0"), + sequence: 1, + ack: String::new(), + success: true, + }; + let _res = sudo(deps.as_mut(), env.clone(), msg).unwrap(); + + // should increase counter by 1 + let res = query(deps.as_ref(), env.clone(), get_msg.clone()).unwrap(); + let value: GetCountResponse = from_binary(&res).unwrap(); + assert_eq!(1, value.count); + + let msg = SudoMsg::ReceiveAck { + channel: format!("channel-0"), + sequence: 1, + ack: String::new(), + success: true, + }; + let _res = sudo(deps.as_mut(), env.clone(), msg).unwrap(); + + // should increase counter by 1 + let res = query(deps.as_ref(), env, get_msg).unwrap(); + let value: GetCountResponse = from_binary(&res).unwrap(); + assert_eq!(2, value.count); + } +} diff --git a/scripts/tests/ibc-hooks/counter/src/error.rs b/scripts/tests/ibc-hooks/counter/src/error.rs new file mode 100644 index 000000000..3caf0c5c5 --- /dev/null +++ b/scripts/tests/ibc-hooks/counter/src/error.rs @@ -0,0 +1,16 @@ +use cosmwasm_std::StdError; +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum ContractError { + #[error("{0}")] + Std(#[from] StdError), + + #[error("Unauthorized")] + Unauthorized {}, + + #[error("Custom Error val: {val:?}")] + CustomError { val: String }, + // Add any other custom errors you like here. + // Look at https://docs.rs/thiserror/1.0.21/thiserror/ for details. +} diff --git a/scripts/tests/ibc-hooks/counter/src/helpers.rs b/scripts/tests/ibc-hooks/counter/src/helpers.rs new file mode 100644 index 000000000..c943c1365 --- /dev/null +++ b/scripts/tests/ibc-hooks/counter/src/helpers.rs @@ -0,0 +1,48 @@ +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; + +use cosmwasm_std::{ + to_binary, Addr, Coin, CosmosMsg, CustomQuery, Querier, QuerierWrapper, StdResult, WasmMsg, + WasmQuery, +}; + +use crate::msg::{ExecuteMsg, GetCountResponse, QueryMsg}; + +/// CwTemplateContract is a wrapper around Addr that provides a lot of helpers +/// for working with this. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] +pub struct CwTemplateContract(pub Addr); + +impl CwTemplateContract { + pub fn addr(&self) -> Addr { + self.0.clone() + } + + pub fn call>(&self, msg: T) -> StdResult { + let msg = to_binary(&msg.into())?; + Ok(WasmMsg::Execute { + contract_addr: self.addr().into(), + msg, + funds: vec![], + } + .into()) + } + + /// Get Count + pub fn count(&self, querier: &Q, addr: Addr) -> StdResult + where + Q: Querier, + T: Into, + CQ: CustomQuery, + { + let msg = QueryMsg::GetCount { addr }; + let query = WasmQuery::Smart { + contract_addr: self.addr().into(), + msg: to_binary(&msg)?, + } + .into(); + let res: GetCountResponse = QuerierWrapper::::new(querier).query(&query)?; + Ok(res) + } +} + diff --git a/scripts/tests/ibc-hooks/counter/src/integration_tests.rs b/scripts/tests/ibc-hooks/counter/src/integration_tests.rs new file mode 100644 index 000000000..4c5078465 --- /dev/null +++ b/scripts/tests/ibc-hooks/counter/src/integration_tests.rs @@ -0,0 +1,71 @@ +#[cfg(test)] +mod tests { + use crate::helpers::CwTemplateContract; + use crate::msg::InstantiateMsg; + use cosmwasm_std::{Addr, Coin, Empty, Uint128}; + use cw_multi_test::{App, AppBuilder, Contract, ContractWrapper, Executor}; + + pub fn contract_template() -> Box> { + let contract = ContractWrapper::new( + crate::contract::execute, + crate::contract::instantiate, + crate::contract::query, + ); + Box::new(contract) + } + + const USER: &str = "USER"; + const ADMIN: &str = "ADMIN"; + const NATIVE_DENOM: &str = "denom"; + + fn mock_app() -> App { + AppBuilder::new().build(|router, _, storage| { + router + .bank + .init_balance( + storage, + &Addr::unchecked(USER), + vec![Coin { + denom: NATIVE_DENOM.to_string(), + amount: Uint128::new(1), + }], + ) + .unwrap(); + }) + } + + fn proper_instantiate() -> (App, CwTemplateContract) { + let mut app = mock_app(); + let cw_template_id = app.store_code(contract_template()); + + let msg = InstantiateMsg { count: 1i32 }; + let cw_template_contract_addr = app + .instantiate_contract( + cw_template_id, + Addr::unchecked(ADMIN), + &msg, + &[], + "test", + None, + ) + .unwrap(); + + let cw_template_contract = CwTemplateContract(cw_template_contract_addr); + + (app, cw_template_contract) + } + + mod count { + use super::*; + use crate::msg::ExecuteMsg; + + #[test] + fn count() { + let (mut app, cw_template_contract) = proper_instantiate(); + + let msg = ExecuteMsg::Increment {}; + let cosmos_msg = cw_template_contract.call(msg).unwrap(); + app.execute(Addr::unchecked(USER), cosmos_msg).unwrap(); + } + } +} diff --git a/scripts/tests/ibc-hooks/counter/src/lib.rs b/scripts/tests/ibc-hooks/counter/src/lib.rs new file mode 100644 index 000000000..ffd1f6ac4 --- /dev/null +++ b/scripts/tests/ibc-hooks/counter/src/lib.rs @@ -0,0 +1,9 @@ +#![allow(unused_imports)] +pub mod contract; +mod error; +pub mod helpers; +pub mod integration_tests; +pub mod msg; +pub mod state; + +pub use crate::error::ContractError; diff --git a/scripts/tests/ibc-hooks/counter/src/msg.rs b/scripts/tests/ibc-hooks/counter/src/msg.rs new file mode 100644 index 000000000..037d8c577 --- /dev/null +++ b/scripts/tests/ibc-hooks/counter/src/msg.rs @@ -0,0 +1,63 @@ +use cosmwasm_schema::{cw_serde, QueryResponses}; +use cosmwasm_std::{Addr, Coin}; + +#[cw_serde] +pub struct InstantiateMsg { + pub count: i32, +} + +#[cw_serde] +pub enum ExecuteMsg { + Increment {}, + Reset { count: i32 }, +} + +#[cw_serde] +#[derive(QueryResponses)] +pub enum QueryMsg { + // GetCount returns the current count as a json-encoded number + #[returns(GetCountResponse)] + GetCount { addr: Addr }, + #[returns(GetTotalFundsResponse)] + GetTotalFunds { addr: Addr }, +} + +// We define a custom struct for each query response +#[cw_serde] +pub struct GetCountResponse { + pub count: i32, +} + +#[cw_serde] +pub struct GetTotalFundsResponse { + pub total_funds: Vec, +} + +#[cw_serde] +#[serde(rename = "ibc_lifecycle_complete")] +pub enum IBCLifecycleComplete { + #[serde(rename = "ibc_ack")] + IBCAck { + /// The source channel (terra side) of the IBC packet + channel: String, + /// The sequence number that the packet was sent with + sequence: u64, + /// String encoded version of the ack as seen by OnAcknowledgementPacket(..) + ack: String, + /// Weather an ack is a success of failure according to the transfer spec + success: bool, + }, + #[serde(rename = "ibc_timeout")] + IBCTimeout { + /// The source channel (terra side) of the IBC packet + channel: String, + /// The sequence number that the packet was sent with + sequence: u64, + }, +} + +#[cw_serde] +pub enum SudoMsg { + #[serde(rename = "ibc_lifecycle_complete")] + IBCLifecycleComplete(IBCLifecycleComplete), +} diff --git a/scripts/tests/ibc-hooks/counter/src/state.rs b/scripts/tests/ibc-hooks/counter/src/state.rs new file mode 100644 index 000000000..4b8002fc4 --- /dev/null +++ b/scripts/tests/ibc-hooks/counter/src/state.rs @@ -0,0 +1,14 @@ +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; + +use cosmwasm_std::{Addr, Coin}; +use cw_storage_plus::{Item, Map}; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] +pub struct Counter { + pub count: i32, + pub total_funds: Vec, + pub owner: Addr, +} + +pub const COUNTERS: Map = Map::new("state"); diff --git a/scripts/tests/ibc-hooks/increment.sh b/scripts/tests/ibc-hooks/increment.sh new file mode 100755 index 000000000..ff959b974 --- /dev/null +++ b/scripts/tests/ibc-hooks/increment.sh @@ -0,0 +1,109 @@ +#!/bin/bash + +echo "" +echo "#################" +echo "# IBC Hook call #" +echo "#################" +echo "" + +BINARY=picad +CHAIN_DIR=$(pwd)/data +WALLET_1=$($BINARY keys show wallet1 -a --keyring-backend test --home $CHAIN_DIR/test-1) +WALLET_2=$($BINARY keys show wallet2 -a --keyring-backend test --home $CHAIN_DIR/test-2) +DENOM=ppica + +# Deploy the smart contract on chain to test the callbacks. (find the source code under the following url: `~/scripts/tests/ibc-hooks/counter/src/contract.rs`) +echo "Deploying counter contract" + +TX_HASH=$($BINARY tx wasm store $(pwd)/scripts/tests/ibc-hooks/counter/artifacts/counter.wasm --from $WALLET_2 --chain-id test-2 --home $CHAIN_DIR/test-2 --node tcp://localhost:26657 --keyring-backend test -y --gas 10000000 --fees 6000000$DENOM -o json | jq -r '.txhash') +sleep 3 +TX_RESP=$($BINARY query tx $TX_HASH -o josn --chain-id test-2 --home $CHAIN_DIR/test-2 --node tcp://localhost:26657) +CODE_ID=$(echo $TX_RESP | jq -r '.events[8].attributes[1].value') + + +# Use Instantiate2 to instantiate the previous smart contract with a random hash to enable multiple instances of the same contract (when needed). +echo "Instantiating counter contract" +RANDOM_HASH=$(hexdump -vn16 -e'4/4 "%08X" 1 "\n"' /dev/urandom) +TX_HASH=$($BINARY tx wasm instantiate2 $CODE_ID '{"count": 0}' $RANDOM_HASH --no-admin --label="Label with $RANDOM_HASH" --from $WALLET_2 --chain-id test-2 --home $CHAIN_DIR/test-2 --node tcp://localhost:26657 --keyring-backend test -y --gas 10000000 --fees 6000000$DENOM -o json | jq -r '.txhash') +echo "TX hash: $TX_HASH" +sleep 3 +CONTRACT_RESP=$($BINARY query tx $TX_HASH -o josn --chain-id test-2 --home $CHAIN_DIR/test-2 --node tcp://localhost:26657) +CONTRACT_ADDRESS=$(echo $CONTRACT_RESP | jq -r '.events[9].attributes[0].value') +echo "Contract address: $CONTRACT_ADDRESS" + +echo "Executing the IBC Hook to increment the counter" +# First execute an IBC transfer to create the entry in the smart contract with the sender address ... +IBC_HOOK_RES=$($BINARY tx ibc-transfer transfer transfer channel-0 $CONTRACT_ADDRESS 1$DENOM --memo='{"wasm":{"contract": "'"$CONTRACT_ADDRESS"'" ,"msg": {"increment": {}}}}' --chain-id test-1 --home $CHAIN_DIR/test-1 --node tcp://localhost:16657 --keyring-backend test --from $WALLET_1 --fees 6000000$DENOM -y -o json) +echo "IBC Hook response: $IBC_HOOK_RES" +sleep 6 +# parse txHash from IBC_HOOK_RES and query txHash to echo response +IBC_HOOK_TX_HASH=$(echo $IBC_HOOK_RES | jq -r '.txhash') +TX_RESP=$($BINARY query tx $IBC_HOOK_TX_HASH -o json --chain-id test-1 --home $CHAIN_DIR/test-1 --node tcp://localhost:16657) +echo "Tx response: $TX_RESP" +sleep 3 +# ... then send another transfer to increments the count value from 0 to 1, send 1 more to the contract address to validate that it increased the value correctly. +IBC_HOOK_RES=$($BINARY tx ibc-transfer transfer transfer channel-0 $CONTRACT_ADDRESS 1$DENOM --memo='{"wasm":{"contract": "'"$CONTRACT_ADDRESS"'" ,"msg": {"increment": {}}}}' --chain-id test-1 --home $CHAIN_DIR/test-1 --fees 6000000$DENOM --node tcp://localhost:16657 --keyring-backend test --from $WALLET_1 -y -o json) +sleep 6 +IBC_HOOK_TX_HASH=$(echo $IBC_HOOK_RES | jq -r '.txhash') +TX_RESP=$($BINARY query tx $IBC_HOOK_TX_HASH -o json --chain-id test-1 --home $CHAIN_DIR/test-1 --node tcp://localhost:16657) +echo "Tx response1: $TX_RESP" +export WALLET_1_WASM_SENDER=$($BINARY q ibchooks wasm-sender channel-0 "$WALLET_1" --chain-id test-1 --home $CHAIN_DIR/test-1 --node tcp://localhost:16657) + +IBC_RECEIVER_BALANCE=$($BINARY query bank balances $WALLET_1 --chain-id test-1 --home $CHAIN_DIR/test-1 --node tcp://localhost:16657 -o json) +echo "IBC Receiver balance: $IBC_RECEIVER_BALANCE" + +echo "wallet 1 wasm sender: $WALLET_1_WASM_SENDER" + +COUNT_RES="" +COUNT_FUNDS_RES="" +while [ "$COUNT_RES" != "1" ] || [ "$COUNT_FUNDS_RES" != "2" ]; do + sleep 3 + # Get count res + RES=$($BINARY query wasm contract-state smart "$CONTRACT_ADDRESS" '{"get_count": {"addr": "'"$WALLET_1_WASM_SENDER"'"}}' --chain-id test-2 --home $CHAIN_DIR/test-2 --node tcp://localhost:26657 -o json) + echo "Query response: $RES" + + # Query to assert that the counter value is 1 and the fund send are (remeber that the first time fund are send to the contract the counter is set to 0 instead of 1) + COUNT_TX=$($BINARY query wasm contract-state smart "$CONTRACT_ADDRESS" '{"get_count": {"addr": "'"$WALLET_1_WASM_SENDER"'"}}' --chain-id test-2 --home $CHAIN_DIR/test-2 --node tcp://localhost:26657 -o json) + echo "Count tx: $COUNT_TX" + COUNT_RES=$(echo $COUNT_TX | jq -r '.data.count') + COUNT_FUNDS_RES=$($BINARY query wasm contract-state smart "$CONTRACT_ADDRESS" '{"get_total_funds": {"addr": "'"$WALLET_1_WASM_SENDER"'"}}' --chain-id test-2 --home $CHAIN_DIR/test-2 --node tcp://localhost:26657 -o json | jq -r '.data.total_funds[0].amount') + echo "transaction relayed count: $COUNT_RES and relayed funds: $COUNT_FUNDS_RES" +done + +echo "Executing the IBC Hook to increment the counter on callback" +# Execute an IBC transfer with ibc_callback to test the callback acknowledgement twice. +IBC_HOOK_RES=$($BINARY tx ibc-transfer transfer transfer channel-0 $WALLET_1_WASM_SENDER 1$DENOM --memo='{"ibc_callback":"'"$CONTRACT_ADDRESS"'"}' --chain-id test-2 --home $CHAIN_DIR/test-2 --fees 6000000$DENOM --node tcp://localhost:26657 --keyring-backend test --from $WALLET_2 -y -o json) + + +sleep 3 +IBC_HOOK_RES=$($BINARY tx ibc-transfer transfer transfer channel-0 $WALLET_1_WASM_SENDER 1$DENOM --memo='{"ibc_callback":"'"$CONTRACT_ADDRESS"'"}' --chain-id test-2 --home $CHAIN_DIR/test-2 --fees 6000000$DENOM --node tcp://localhost:26657 --keyring-backend test --from $WALLET_2 -y -o json) +export WALLET_2_WASM_SENDER=$($BINARY q ibchooks wasm-sender channel-0 "$WALLET_2" --chain-id test-2 --home $CHAIN_DIR/test-2 --node tcp://localhost:26657) + +COUNT_RES="" +while [ "$COUNT_RES" != "2" ]; do + sleep 3 + # Query the smart contract to validate that it received the callback twice (notice that the queried addess is the contract address itself). + COUNT_RES=$($BINARY query wasm contract-state smart "$CONTRACT_ADDRESS" '{"get_count": {"addr": "'"$CONTRACT_ADDRESS"'"}}' --chain-id test-2 --home $CHAIN_DIR/test-2 --node tcp://localhost:26657 -o json | jq -r '.data.count') + echo "relayed callback transaction count: $COUNT_RES" +done + +echo "Executing the IBC Hook to increment the counter on callback with timeout" +# Prepare two callback queries but this time with a timeout height that is unreachable (0-1) to test the timeout callback. +IBC_HOOK_RES=$($BINARY tx ibc-transfer transfer transfer channel-0 $WALLET_1_WASM_SENDER 1$DENOM --packet-timeout-height="0-1" --memo='{"ibc_callback":"'"$CONTRACT_ADDRESS"'"}' --chain-id test-2 --home $CHAIN_DIR/test-2 --fees 6000000$DENOM --node tcp://localhost:26657 --keyring-backend test --from $WALLET_2 -y -o json) +sleep 3 +IBC_HOOK_RES=$($BINARY tx ibc-transfer transfer transfer channel-0 $WALLET_1_WASM_SENDER 1$DENOM --packet-timeout-height="0-1" --memo='{"ibc_callback":"'"$CONTRACT_ADDRESS"'"}' --chain-id test-2 --home $CHAIN_DIR/test-2 --fees 6000000$DENOM --node tcp://localhost:26657 --keyring-backend test --from $WALLET_2 -y -o json) +export WALLET_2_WASM_SENDER=$($BINARY q ibchooks wasm-sender channel-0 "$WALLET_2" --chain-id test-2 --home $CHAIN_DIR/test-2 --node tcp://localhost:26657) + +COUNT_RES="" +while [ "$COUNT_RES" != "22" ]; do + sleep 3 + # Query the smart contract to validate that it received the timeout callback twice and keep in mind that per each timeout the contract increases 10 counts (notice that the queried addess is the contract address itself). + COUNT_RES=$($BINARY query wasm contract-state smart "$CONTRACT_ADDRESS" '{"get_count": {"addr": "'"$CONTRACT_ADDRESS"'"}}' --chain-id test-2 --home $CHAIN_DIR/test-2 --node tcp://localhost:26657 -o json | jq -r '.data.count') + echo "relayed timeout callback transaction count: $COUNT_RES" +done + +echo "" +echo "##########################" +echo "# SUCCESS: IBC Hook call #" +echo "##########################" +echo "" diff --git a/scripts/tests/init-test-framework.sh b/scripts/tests/init-test-framework.sh new file mode 100755 index 000000000..b9e736b58 --- /dev/null +++ b/scripts/tests/init-test-framework.sh @@ -0,0 +1,151 @@ +#!/bin/bash + +BINARY=picad +CHAIN_DIR=$(pwd)/data +CHAINID_1=test-1 +CHAINID_2=test-2 + +### Custom genesis files +DENOM=ppica +GENESIS_1=$CHAIN_DIR/$CHAINID_1/config/genesis.json +TMP_GENESIS_1=$CHAIN_DIR/$CHAINID_1/config/genesis.json.tmp + +GENESIS_2=$CHAIN_DIR/$CHAINID_2/config/genesis.json +TMP_GENESIS_2=$CHAIN_DIR/$CHAINID_2/config/genesis.json.tmp + +VAL_MNEMONIC_1="clock post desk civil pottery foster expand merit dash seminar song memory figure uniform spice circle try happy obvious trash crime hybrid hood cushion" +VAL_MNEMONIC_2="angry twist harsh drastic left brass behave host shove marriage fall update business leg direct reward object ugly security warm tuna model broccoli choice" +WALLET_MNEMONIC_1="banner spread envelope side kite person disagree path silver will brother under couch edit food venture squirrel civil budget number acquire point work mass" +WALLET_MNEMONIC_2="veteran try aware erosion drink dance decade comic dawn museum release episode original list ability owner size tuition surface ceiling depth seminar capable only" +WALLET_MNEMONIC_3="vacuum burst ordinary enact leaf rabbit gather lend left chase park action dish danger green jeans lucky dish mesh language collect acquire waste load" +WALLET_MNEMONIC_4="open attitude harsh casino rent attitude midnight debris describe spare cancel crisp olive ride elite gallery leaf buffalo sheriff filter rotate path begin soldier" +RLY_MNEMONIC_1="alley afraid soup fall idea toss can goose become valve initial strong forward bright dish figure check leopard decide warfare hub unusual join cart" +RLY_MNEMONIC_2="record gift you once hip style during joke field prize dust unique length more pencil transfer quit train device arrive energy sort steak upset" + +P2PPORT_1=16656 +P2PPORT_2=26656 +RPCPORT_1=16657 +RPCPORT_2=26657 +RESTPORT_1=1316 +RESTPORT_2=1317 +ROSETTA_1=8080 +ROSETTA_2=8081 +GRPCPORT_1=8090 +GRPCPORT_2=9090 +GRPCWEB_1=8091 +GRPCWEB_2=9091 + +# Stop if it is already running +if pgrep -x "$BINARY" >/dev/null; then + echo "Terminating $BINARY..." + killall $BINARY +fi + +echo "Removing previous data..." +rm -rf $CHAIN_DIR/$CHAINID_1 &> /dev/null +rm -rf $CHAIN_DIR/$CHAINID_2 &> /dev/null + +# Add directories for both chains, exit if an error occurs +if ! mkdir -p $CHAIN_DIR/$CHAINID_1 2>/dev/null; then + echo "Failed to create chain folder. Aborting..." + exit 1 +fi + +if ! mkdir -p $CHAIN_DIR/$CHAINID_2 2>/dev/null; then + echo "Failed to create chain folder. Aborting..." + exit 1 +fi + +echo "Initializing $CHAINID_1 & $CHAINID_2..." +$BINARY init test --home $CHAIN_DIR/$CHAINID_1 --chain-id=$CHAINID_1 &> /dev/null +$BINARY init test --home $CHAIN_DIR/$CHAINID_2 --chain-id=$CHAINID_2 &> /dev/null + +echo "Adding genesis accounts..." +echo $VAL_MNEMONIC_1 | $BINARY keys add val1 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test +echo $VAL_MNEMONIC_2 | $BINARY keys add val2 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test +echo $WALLET_MNEMONIC_1 | $BINARY keys add wallet1 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test +echo $WALLET_MNEMONIC_2 | $BINARY keys add wallet2 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test +echo $WALLET_MNEMONIC_3 | $BINARY keys add wallet3 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test +echo $WALLET_MNEMONIC_4 | $BINARY keys add wallet4 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test +echo $RLY_MNEMONIC_1 | $BINARY keys add rly1 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test +echo $RLY_MNEMONIC_2 | $BINARY keys add rly2 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test + +VAL1_ADDR=$($BINARY keys show val1 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +VAL2_ADDR=$($BINARY keys show val2 --home $CHAIN_DIR/$CHAINID_2 --keyring-backend test -a) +WALLET1_ADDR=$($BINARY keys show wallet1 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +WALLET2_ADDR=$($BINARY keys show wallet2 --home $CHAIN_DIR/$CHAINID_2 --keyring-backend test -a) +WALLET3_ADDR=$($BINARY keys show wallet3 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +WALLET4_ADDR=$($BINARY keys show wallet4 --home $CHAIN_DIR/$CHAINID_2 --keyring-backend test -a) +RLY1_ADDR=$($BINARY keys show rly1 --home $CHAIN_DIR/$CHAINID_1 --keyring-backend test -a) +RLY2_ADDR=$($BINARY keys show rly2 --home $CHAIN_DIR/$CHAINID_2 --keyring-backend test -a) + +$BINARY add-genesis-account $VAL1_ADDR "1000000000000000000000${DENOM}" --home $CHAIN_DIR/$CHAINID_1 +$BINARY add-genesis-account $VAL2_ADDR "1000000000000000000000${DENOM}" --home $CHAIN_DIR/$CHAINID_2 +$BINARY add-genesis-account $WALLET1_ADDR "1000000000000000000000${DENOM}" --home $CHAIN_DIR/$CHAINID_1 +$BINARY add-genesis-account $WALLET2_ADDR "1000000000000000000000${DENOM}" --home $CHAIN_DIR/$CHAINID_2 +$BINARY add-genesis-account $WALLET3_ADDR "1000000000000000000000${DENOM}" --vesting-amount "10000000000${DENOM}" --vesting-start-time $(date +%s) --vesting-end-time $(($(date '+%s') + 100000023)) --home $CHAIN_DIR/$CHAINID_1 +$BINARY add-genesis-account $WALLET4_ADDR "1000000000000000000000${DENOM}" --vesting-amount "10000000000${DENOM}" --vesting-start-time $(date +%s) --vesting-end-time $(($(date '+%s') + 100000023)) --home $CHAIN_DIR/$CHAINID_2 +$BINARY add-genesis-account $RLY1_ADDR "1000000000000000000000${DENOM}" --home $CHAIN_DIR/$CHAINID_1 +$BINARY add-genesis-account $RLY2_ADDR "1000000000000000000000${DENOM}" --home $CHAIN_DIR/$CHAINID_2 + +echo "Creating and collecting gentx..." +$BINARY gentx val1 1000000000000000000000${DENOM} --home $CHAIN_DIR/$CHAINID_1 --chain-id $CHAINID_1 --keyring-backend test +$BINARY gentx val2 1000000000000000000000${DENOM} --home $CHAIN_DIR/$CHAINID_2 --chain-id $CHAINID_2 --keyring-backend test +$BINARY collect-gentxs --home $CHAIN_DIR/$CHAINID_1 &> /dev/null +$BINARY collect-gentxs --home $CHAIN_DIR/$CHAINID_2 &> /dev/null + +echo "Changing defaults and ports in app.toml and config.toml files..." +sed -i -e 's#"tcp://0.0.0.0:26656"#"tcp://localhost:'"$P2PPORT_1"'"#g' $CHAIN_DIR/$CHAINID_1/config/config.toml +sed -i -e 's#"tcp://127.0.0.1:26657"#"tcp://localhost:'"$RPCPORT_1"'"#g' $CHAIN_DIR/$CHAINID_1/config/config.toml +sed -i -e 's#"tcp://localhost:26657"#"tcp://localhost:'"$RPCPORT_1"'"#g' $CHAIN_DIR/$CHAINID_1/config/client.toml +sed -i -e 's/timeout_commit = "5s"/timeout_commit = "1s"/g' $CHAIN_DIR/$CHAINID_1/config/config.toml +sed -i -e 's/timeout_propose = "3s"/timeout_propose = "1s"/g' $CHAIN_DIR/$CHAINID_1/config/config.toml +sed -i -e 's/index_all_keys = false/index_all_keys = true/g' $CHAIN_DIR/$CHAINID_1/config/config.toml +sed -i -e 's/enable = false/enable = true/g' $CHAIN_DIR/$CHAINID_1/config/app.toml +sed -i -e 's/swagger = false/swagger = true/g' $CHAIN_DIR/$CHAINID_1/config/app.toml +sed -i -e 's#"tcp://localhost:1317"#"tcp://localhost:'"$RESTPORT_1"'"#g' $CHAIN_DIR/$CHAINID_1/config/app.toml +sed -i -e 's#":8080"#":'"$ROSETTA_1"'"#g' $CHAIN_DIR/$CHAINID_1/config/app.toml +sed -i -e 's/enabled-unsafe-cors = false/enabled-unsafe-cors = true/g' $CHAIN_DIR/$CHAINID_1/config/app.toml + + +sed -i -e 's#"tcp://0.0.0.0:26656"#"tcp://localhost:'"$P2PPORT_2"'"#g' $CHAIN_DIR/$CHAINID_2/config/config.toml +sed -i -e 's#"tcp://127.0.0.1:26657"#"tcp://localhost:'"$RPCPORT_2"'"#g' $CHAIN_DIR/$CHAINID_2/config/config.toml +sed -i -e 's#"tcp://localhost:26657"#"tcp://localhost:'"$RPCPORT_2"'"#g' $CHAIN_DIR/$CHAINID_2/config/client.toml +sed -i -e 's/timeout_commit = "5s"/timeout_commit = "1s"/g' $CHAIN_DIR/$CHAINID_2/config/config.toml +sed -i -e 's/timeout_propose = "3s"/timeout_propose = "1s"/g' $CHAIN_DIR/$CHAINID_2/config/config.toml +sed -i -e 's/index_all_keys = false/index_all_keys = true/g' $CHAIN_DIR/$CHAINID_2/config/config.toml +sed -i -e 's/enable = false/enable = true/g' $CHAIN_DIR/$CHAINID_2/config/app.toml +sed -i -e 's/swagger = false/swagger = true/g' $CHAIN_DIR/$CHAINID_2/config/app.toml +sed -i -e 's#"tcp://localhost:1317"#"tcp://localhost:'"$RESTPORT_2"'"#g' $CHAIN_DIR/$CHAINID_2/config/app.toml +sed -i -e 's#":8080"#":'"$ROSETTA_2"'"#g' $CHAIN_DIR/$CHAINID_2/config/app.toml +sed -i -e 's/enabled-unsafe-cors = false/enabled-unsafe-cors = true/g' $CHAIN_DIR/$CHAINID_2/config/app.toml + + +echo "Changing genesis.json..." +sed -i -e 's/"voting_period": "172800s"/"voting_period": "10s"/g' $CHAIN_DIR/$CHAINID_1/config/genesis.json +sed -i -e 's/"voting_period": "172800s"/"voting_period": "10s"/g' $CHAIN_DIR/$CHAINID_2/config/genesis.json +sed -i -e 's/"reward_delay_time": "604800s"/"reward_delay_time": "0s"/g' $CHAIN_DIR/$CHAINID_1/config/genesis.json +sed -i -e 's/"reward_delay_time": "604800s"/"reward_delay_time": "0s"/g' $CHAIN_DIR/$CHAINID_2/config/genesis.json + + +# Update the genesis file +update_test_genesis () { + jq "$1" $GENESIS_1 > $TMP_GENESIS_1 && mv $TMP_GENESIS_1 $GENESIS_1 + jq "$1" $GENESIS_2 > $TMP_GENESIS_2 && mv $TMP_GENESIS_2 $GENESIS_2 +} + +echo "update test genesis" +update_test_genesis ".app_state[\"staking\"][\"params\"][\"bond_denom\"]=\"$DENOM\"" +update_test_genesis ".app_state[\"mint\"][\"params\"][\"mint_denom\"]=\"$DENOM\"" +update_test_genesis ".app_state[\"crisis\"][\"constant_fee\"][\"denom\"]=\"$DENOM\"" +update_test_genesis ".app_state[\"gov\"][\"params\"][\"min_deposit\"][0][\"denom\"]=\"$DENOM\"" + + +# Starting the chain +echo "Starting $CHAINID_1 in $CHAIN_DIR..." +echo "Creating log file at $CHAIN_DIR/$CHAINID_1.log" +$BINARY start --log_level info --log_format json --p2p.pex=false --home $CHAIN_DIR/$CHAINID_1 --pruning=nothing --grpc.address="0.0.0.0:$GRPCPORT_1" > $CHAIN_DIR/$CHAINID_1.log 2>&1 & + +echo "Starting $CHAINID_2 in $CHAIN_DIR..." +echo "Creating log file at $CHAIN_DIR/$CHAINID_2.log" +$BINARY start --log_level info --log_format json --p2p.pex=false --home $CHAIN_DIR/$CHAINID_2 --pruning=nothing --grpc.address="0.0.0.0:$GRPCPORT_2" > $CHAIN_DIR/$CHAINID_2.log 2>&1 & diff --git a/scripts/tweak-test-upgrade.sh b/scripts/tweak-test-upgrade.sh new file mode 100755 index 000000000..8ad2f1788 --- /dev/null +++ b/scripts/tweak-test-upgrade.sh @@ -0,0 +1,182 @@ +#!/bin/bash + +# the upgrade is a fork, "true" otherwise +FORK=${FORK:-"false"} + +OLD_VERSION=kien-v6.5.0-tweak +UPGRADE_WAIT=${UPGRADE_WAIT:-20} +HOME=mytestnet +ROOT=$(pwd) +DENOM=ppica +CHAIN_ID=localpica +SOFTWARE_UPGRADE_NAME="v7_0_1" +ADDITIONAL_PRE_SCRIPTS="./scripts/upgrade/v6_to_7/pre_08_wasm.sh" +ADDITIONAL_AFTER_SCRIPTS="./scripts/upgrade/v6_to_7/post_08_wasm.sh" + +SLEEP_TIME=1 + +KEY="mykey" +KEY1="test1" +KEY2="test2" + +if [[ "$FORK" == "true" ]]; then + export PICA_HALT_HEIGHT=20 +fi + +# underscore so that go tool will not take gocache into account +mkdir -p _build/gocache +export GOMODCACHE=$ROOT/_build/gocache + + + +# install old binary if not exist +if [ ! -f "_build/$OLD_VERSION.zip" ] &> /dev/null +then + mkdir -p _build/old + wget -c "https://github.com/notional-labs/composable-cosmos/archive/refs/tags/${OLD_VERSION}.zip" -O _build/${OLD_VERSION}.zip + unzip _build/${OLD_VERSION}.zip -d _build +fi + + +# reinstall old binary +if [ $# -eq 1 ] && [ $1 == "--reinstall-old" ] || ! command -v _build/old/centaurid &> /dev/null; then + cd ./_build/composable-cosmos-${OLD_VERSION} + GOBIN="$ROOT/_build/old" go install -mod=readonly ./... + cd ../.. +fi + + +# install new binary +FORCE_BUILD=${FORCE_BUILD:-"false"} +if ! command -v _build/new/centaurid &> /dev/null || [[ "$FORCE_BUILD" == "true" ]]; then + echo "Building the new binary..." + mkdir -p _build/new + GOBIN="$ROOT/_build/new" go install -mod=readonly ./... +fi + +# run old node +# if [[ "$OSTYPE" == "darwin"* ]]; then + +# else +# screen node1 bash scripts/localnode.sh _build/old/centaurid $DENOM +# fi +echo "running old node" +screen -dms old-node bash scripts/localnode.sh _build/old/centaurid $DENOM + +sleep 2 # wait for note to start + +# execute additional pre scripts +if [ ! -z "$ADDITIONAL_PRE_SCRIPTS" ]; then + # slice ADDITIONAL_SCRIPTS by , + SCRIPTS=($(echo "$ADDITIONAL_PRE_SCRIPTS" | tr ',' ' ')) + for SCRIPT in "${SCRIPTS[@]}"; do + # check if SCRIPT is a file + if [ -f "$SCRIPT" ]; then + echo "executing additional pre scripts from $SCRIPT" + source $SCRIPT + sleep 2 + else + echo "$SCRIPT is not a file" + fi + done +fi + + +run_fork () { + echo "forking" + + while true; do + BLOCK_HEIGHT=$(./_build/old/centaurid status | jq '.SyncInfo.latest_block_height' -r) + # if BLOCK_HEIGHT is not empty + if [ ! -z "$BLOCK_HEIGHT" ]; then + echo "BLOCK_HEIGHT = $BLOCK_HEIGHT" + sleep 10 + else + echo "BLOCK_HEIGHT is empty, forking" + break + fi + done +} + +run_upgrade () { + echo -e "\n\n=> =>start upgrading" + + # Get upgrade height, 12 block after (6s) + STATUS_INFO=($(./_build/old/centaurid status --home $HOME | jq -r '.NodeInfo.network,.SyncInfo.latest_block_height')) + UPGRADE_HEIGHT=$((STATUS_INFO[1] + 18)) + echo "UPGRADE_HEIGHT = $UPGRADE_HEIGHT" + + tar -cf ./_build/new/centaurid.tar -C ./_build/new centaurid + SUM=$(shasum -a 256 ./_build/new/centaurid.tar | cut -d ' ' -f1) + UPGRADE_INFO=$(jq -n ' + { + "binaries": { + "linux/amd64": "file://'$(pwd)'/_build/new/centaurid.tar?checksum=sha256:'"$SUM"'", + } + }') + + + ./_build/old/centaurid tx gov submit-legacy-proposal software-upgrade "$SOFTWARE_UPGRADE_NAME" --upgrade-height $UPGRADE_HEIGHT --upgrade-info "$UPGRADE_INFO" --title "upgrade" --description "upgrade" --from $KEY --keyring-backend test --chain-id $CHAIN_ID --home $HOME -y > /dev/null + + sleep $SLEEP_TIME + + ./_build/old/centaurid tx gov deposit 1 "20000000${DENOM}" --from $KEY --keyring-backend test --chain-id $CHAIN_ID --home $HOME -y > /dev/null + + sleep $SLEEP_TIME + + ./_build/old/centaurid tx gov vote 1 yes --from $KEY --keyring-backend test --chain-id $CHAIN_ID --home $HOME -y > /dev/null + + sleep $SLEEP_TIME + + # ./_build/old/centaurid tx gov vote 1 yes --from $KEY2 --keyring-backend test --chain-id $CHAIN_ID --home $HOME -y > /dev/null + + # sleep $SLEEP_TIME + + # determine block_height to halt + while true; do + BLOCK_HEIGHT=$(./_build/old/centaurid status | jq '.SyncInfo.latest_block_height' -r) + if [ $BLOCK_HEIGHT = "$UPGRADE_HEIGHT" ]; then + # assuming running only 1 centaurid + echo "BLOCK HEIGHT = $UPGRADE_HEIGHT REACHED, KILLING OLD ONE" + pkill centaurid + break + else + ./_build/old/centaurid q gov proposal 1 --output=json | jq ".status" + echo "BLOCK_HEIGHT = $BLOCK_HEIGHT" + sleep 1 + fi + done +} + +# if FORK = true +if [[ "$FORK" == "true" ]]; then + run_fork + unset PICA_HALT_HEIGHT +else + run_upgrade +fi + +sleep 1 + +# run new node +echo -e "\n\n=> =>continue running nodes after upgrade" +CONTINUE="true" screen -dms new-node bash scripts/localnode.sh _build/new/centaurid $DENOM + +sleep 5 + + +# execute additional after scripts +if [ ! -z "$ADDITIONAL_AFTER_SCRIPTS" ]; then + # slice ADDITIONAL_SCRIPTS by , + SCRIPTS=($(echo "$ADDITIONAL_AFTER_SCRIPTS" | tr ',' ' ')) + for SCRIPT in "${SCRIPTS[@]}"; do + # check if SCRIPT is a file + if [ -f "$SCRIPT" ]; then + echo "executing additional after scripts from $SCRIPT" + source $SCRIPT _build/new/centaurid + sleep 5 + else + echo "$SCRIPT is not a file" + fi + done +fi \ No newline at end of file diff --git a/scripts/upgrade/init_deps.sh b/scripts/upgrade/init-deps.sh old mode 100755 new mode 100644 similarity index 81% rename from scripts/upgrade/init_deps.sh rename to scripts/upgrade/init-deps.sh index 5c26e30f9..851ce75d0 --- a/scripts/upgrade/init_deps.sh +++ b/scripts/upgrade/init-deps.sh @@ -1,24 +1,22 @@ #!/bin/bash - -OLD_VERSION=kien-devnet-651 -SOFTWARE_UPGRADE_NAME="v6_6_1" +OLD_VERSION=kien-picad-661 +SOFTWARE_UPGRADE_NAME="v7_0_1" ROOT=$(pwd) COMPOSABLE_VERSION="branchfortestingpfmfix" mkdir -p _build/ - # Check if the directory exists and is a Git repository # TODO: using git, since nix in composable repo requires something with git # Consider using submodule, or firgure this out if [ ! -d "_build/composable/.git" ]; then cd _build/ - git clone https://github.com/ComposableFi/composable.git composable + git clone https://github.com/notional-labs/composable.git composable cd composable git checkout "$COMPOSABLE_VERSION" - cd ../.././ + cd ../../. fi @@ -41,7 +39,8 @@ fi # install new binary if ! command -v _build/new/picad &> /dev/null then + echo -e "\n =>installing new picad... \n \n" mkdir -p _build/new - GOBIN="$ROOT/_build/new" go install -mod=readonly ./... + GOBIN="$ROOT/_build/new" make install fi diff --git a/scripts/upgrade/localnode.sh b/scripts/upgrade/localnode.sh new file mode 100755 index 000000000..6e313b356 --- /dev/null +++ b/scripts/upgrade/localnode.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +KEY="mykey" +KEY1="mykey1" +CHAINID="centauri-dev" +MONIKER="localtestnet" +KEYALGO="secp256k1" +KEYRING="test" +LOGLEVEL="info" +BINARY=$1 +# to trace evm +#TRACE="--trace" +TRACE="" + +HOME_DIR=mytestnet +DENOM=ppica + +# remove existing daemon +rm -rf $HOME_DIR + +if [ ! -x "$(command -v $BINARY)" ]; then + echo "Error: Binary $BINARY is not executable or not found." + exit 1 +fi + + +if [ "$CONTINUE" == "true" ]; then + echo "\n ->> continuing from previous state" + $BINARY start --home $HOME_DIR --log_level debug + exit 0 +fi + + +$BINARY config keyring-backend $KEYRING +$BINARY config chain-id $CHAINID + + +# if $KEY exists it should be deleted +echo "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" | $BINARY keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO --recover --home $HOME_DIR +echo "bottom loan skill merry east cradle onion journey palm apology verb edit desert impose absurd oil bubble sweet glove shallow size build burst effort" | $BINARY keys add $KEY1 --keyring-backend $KEYRING --algo $KEYALGO --recover --home $HOME_DIR +$BINARY init $CHAINID --chain-id $CHAINID --default-denom "ppica" --home $HOME_DIR + +update_test_genesis () { + # update_test_genesis '.consensus_params["block"]["max_gas"]="100000000"' + cat $HOME_DIR/config/genesis.json | jq "$1" > $HOME_DIR/config/tmp_genesis.json && cp $HOME_DIR/config/tmp_genesis.json $HOME_DIR/config/genesis.json +} + +# Allocate genesis accounts (cosmos formatted addresses) +$BINARY add-genesis-account $KEY 100000000000000000000000000ppica --keyring-backend $KEYRING --home $HOME_DIR +$BINARY add-genesis-account $KEY1 100000000000000000000000000ppica --keyring-backend $KEYRING --home $HOME_DIR + +# Sign genesis transaction +$BINARY gentx $KEY 10030009994127689ppica --keyring-backend $KEYRING --chain-id $CHAINID --home $HOME_DIR + +update_test_genesis '.app_state["gov"]["params"]["voting_period"]="20s"' +update_test_genesis '.app_state["mint"]["params"]["mint_denom"]="'$DENOM'"' +update_test_genesis '.app_state["gov"]["params"]["min_deposit"]=[{"denom":"'$DENOM'","amount": "1"}]' +update_test_genesis '.app_state["crisis"]["constant_fee"]={"denom":"'$DENOM'","amount":"1000"}' + +# Collect genesis tx +$BINARY collect-gentxs --home $HOME_DIR + +# Run this to ensure everything worked and that the genesis file is setup correctly +$BINARY validate-genesis --home $HOME_DIR + +if [[ $1 == "pending" ]]; then + echo "pending mode is on, please wait for the first block committed." +fi + +# update request max size so that we can upload the light client +# '' -e is a must have params on mac, if use linux please delete before run +sed -i'' -e 's/max_body_bytes = /max_body_bytes = 1/g' $HOME_DIR/config/config.toml +sed -i'' -e 's/max_tx_bytes = 1048576/max_tx_bytes = 10000000/g' $HOME_DIR/config/config.toml + + +$BINARY start --rpc.unsafe --rpc.laddr tcp://0.0.0.0:26657 --pruning=nothing --minimum-gas-prices=0.001ppica --home=$HOME_DIR --log_level trace --trace --with-tendermint=true --transport=socket --grpc.enable=true --grpc-web.enable=false --api.enable=true --p2p.pex=false --p2p.upnp=false \ No newline at end of file diff --git a/scripts/upgrade/old-node-scripts.sh b/scripts/upgrade/old-node-scripts.sh index d360944f7..e1db94aa3 100755 --- a/scripts/upgrade/old-node-scripts.sh +++ b/scripts/upgrade/old-node-scripts.sh @@ -1,5 +1,6 @@ ADDITIONAL_SCRIPTS=( - "./scripts/upgrade/v_6_4_8/setup-08-wasm.sh" + "./scripts/upgrade/v_6_6_0/setup-08-wasm.sh" + "./scripts/upgrade/v_6_6_0/setup-relayer-account.sh" ) for SCRIPT in "${ADDITIONAL_SCRIPTS[@]}"; do diff --git a/scripts/upgrade/setup-nix-polkadot.sh b/scripts/upgrade/setup-nix-polkadot.sh new file mode 100755 index 000000000..df3fe6856 --- /dev/null +++ b/scripts/upgrade/setup-nix-polkadot.sh @@ -0,0 +1,32 @@ +ROOT=$(pwd) + +cd $ROOT/_build/composable + +# Set the maximum number of attempts +max_attempts=30 + +# Initialize the attempt counter +attempt=1 + +while [ $attempt -le $max_attempts ]; do + echo "Attempt $attempt of $max_attempts" + nix run .#zombienet-rococo-local-picasso-dev + + # Check if the command was successful + if [ $? -eq 0 ]; then + echo "Command executed successfully." + break + else + echo "Command failed, retrying..." + echo "attemp: $attempt" + ((attempt++)) + fi + + # Optional: sleep for a few seconds before retrying + sleep 2 +done + +# Check if all attempts failed +if [ $attempt -gt $max_attempts ]; then + echo "All attempts failed." +fi \ No newline at end of file diff --git a/scripts/upgrade/setup-old-centaurid-node.sh b/scripts/upgrade/setup-old-picad-node.sh similarity index 53% rename from scripts/upgrade/setup-old-centaurid-node.sh rename to scripts/upgrade/setup-old-picad-node.sh index 2316605a9..3d43d0f66 100755 --- a/scripts/upgrade/setup-old-centaurid-node.sh +++ b/scripts/upgrade/setup-old-picad-node.sh @@ -4,21 +4,22 @@ FORK=${FORK:-"false"} -BINARY=_build/old/centaurid +BINARY=_build/old/picad HOME=mytestnet ROOT=$(pwd) DENOM=ppica -CHAIN_ID=centaurid ADDITIONAL_PRE_SCRIPTS="./scripts/upgrade/old-node-scripts.sh" SLEEP_TIME=1 -screen -L -dmS node1 bash scripts/localnode.sh $BINARY $DENOM --Logfile $HOME/log-screen.txt +screen -L -dmS node1 bash scripts/upgrade/localnode.sh $BINARY $DENOM --Logfile $HOME/log-screen.txt + +#screen -L -dmS bash scripts/upgrade/localnode.sh $BINARY $DENOM --Logfile $HOME/log-screen.txt #scripts/localnode.sh $BINARY -sleep 4 # wait for note to start +sleep 10 # wait for note to start # execute additional pre scripts source $ADDITIONAL_PRE_SCRIPTS diff --git a/scripts/upgrade/setup-polkadot-node.sh b/scripts/upgrade/setup-polkadot-node.sh index dadd487ff..b47d6e2b3 100755 --- a/scripts/upgrade/setup-polkadot-node.sh +++ b/scripts/upgrade/setup-polkadot-node.sh @@ -1,6 +1,3 @@ -ROOT=$(pwd) - -cd $ROOT/_build/composable - -# This start the node -nix run .#zombienet-rococo-local-picasso-dev +export PARA_HOST=127.0.0.1 +cd /home/kien6034/notional/composable-ibc-old/scripts/zombienet +process-compose up -f process-compose.yml & sleep 100 \ No newline at end of file diff --git a/scripts/upgrade/upgrade.sh b/scripts/upgrade/upgrade.sh index 28771b9ba..8b6fadc3c 100755 --- a/scripts/upgrade/upgrade.sh +++ b/scripts/upgrade/upgrade.sh @@ -6,13 +6,13 @@ HOME=mytestnet ROOT=$(pwd) DENOM=ppica CHAIN_ID=centauri-dev -SOFTWARE_UPGRADE_NAME="v6_6_1" -ADDITIONAL_PRE_SCRIPTS="./scripts/upgrade/v_6_4_8/pre-script.sh" -ADDITIONAL_AFTER_SCRIPTS="./scripts/upgrade/v_6_4_8/post-script.sh" +SOFTWARE_UPGRADE_NAME="v7_0_1" +ADDITIONAL_PRE_SCRIPTS="./scripts/upgrade/v_6_6_0/pre-script.sh" +ADDITIONAL_AFTER_SCRIPTS="./scripts/upgrade/v_6_6_0/post-script.sh" KEY="mykey" KEY1="mykey1" -SLEEP_TIME=1 +SLEEP_TIME=5 UPGRADE_PROPOSAL_ID=2 @@ -20,8 +20,8 @@ run_upgrade () { echo -e "\n\n=> =>start upgrading" # Get upgrade height, 12 block after (6s) - STATUS_INFO=($(./_build/old/centaurid status --home $HOME | jq -r '.NodeInfo.network,.SyncInfo.latest_block_height')) - UPGRADE_HEIGHT=$((STATUS_INFO[1] + 12)) + STATUS_INFO=($(./_build/old/picad status --home $HOME | jq -r '.NodeInfo.network,.SyncInfo.latest_block_height')) + UPGRADE_HEIGHT=$((STATUS_INFO[1] + 8)) echo "UPGRADE_HEIGHT = $UPGRADE_HEIGHT" tar -cf ./_build/new/picad.tar -C ./_build/new picad @@ -34,31 +34,31 @@ run_upgrade () { }') - ./_build/old/centaurid tx gov submit-legacy-proposal software-upgrade "$SOFTWARE_UPGRADE_NAME" --upgrade-height $UPGRADE_HEIGHT --upgrade-info "$UPGRADE_INFO" --title "upgrade" --description "upgrade" --from $KEY --fees 100000${DENOM} --keyring-backend test --chain-id $CHAIN_ID --home $HOME -y > /dev/null + ./_build/old/picad tx gov submit-legacy-proposal software-upgrade "$SOFTWARE_UPGRADE_NAME" --upgrade-height $UPGRADE_HEIGHT --upgrade-info "$UPGRADE_INFO" --title "upgrade" --description "upgrade" --from $KEY --fees 100000${DENOM} --keyring-backend test --chain-id $CHAIN_ID --home $HOME -y > /dev/null sleep $SLEEP_TIME - ./_build/old/centaurid tx gov deposit $UPGRADE_PROPOSAL_ID "20000000${DENOM}" --from $KEY --keyring-backend test --fees 100000${DENOM} --chain-id $CHAIN_ID --home $HOME -y + ./_build/old/picad tx gov deposit $UPGRADE_PROPOSAL_ID "20000000${DENOM}" --from $KEY --keyring-backend test --fees 100000${DENOM} --chain-id $CHAIN_ID --home $HOME -y sleep $SLEEP_TIME - ./_build/old/centaurid tx gov vote $UPGRADE_PROPOSAL_ID yes --from $KEY --keyring-backend test --fees 100000${DENOM} --chain-id $CHAIN_ID --home $HOME -y + ./_build/old/picad tx gov vote $UPGRADE_PROPOSAL_ID yes --from $KEY --keyring-backend test --fees 100000${DENOM} --chain-id $CHAIN_ID --home $HOME -y sleep $SLEEP_TIME # determine block_height to halt while true; do - BLOCK_HEIGHT=$(./_build/old/centaurid status | jq '.SyncInfo.latest_block_height' -r) + BLOCK_HEIGHT=$(./_build/old/picad status | jq '.SyncInfo.latest_block_height' -r) if [ $BLOCK_HEIGHT = "$UPGRADE_HEIGHT" ]; then - # assuming running only 1 centaurid + # assuming running only 1 picad echo "BLOCK HEIGHT = $UPGRADE_HEIGHT REACHED, KILLING OLD ONE" - pkill centaurid + pkill picad break else - ./_build/old/centaurid q gov proposal $UPGRADE_PROPOSAL_ID --output=json | jq ".status" + ./_build/old/picad q gov proposal $UPGRADE_PROPOSAL_ID --output=json | jq ".status" echo "BLOCK_HEIGHT = $BLOCK_HEIGHT" - sleep 1 + sleep $SLEEP_TIME fi done } @@ -75,6 +75,6 @@ sleep 1 # run new node echo -e "\n\n=> =>continue running nodes after upgrade" -#CONTINUE="true" screen -L -dmS picad bash scripts/localnode.sh _build/new/picad $DENOM -CONTINUE="true" bash scripts/localnode.sh _build/new/picad $DENOM +CONTINUE="true" screen -L -dmS picad bash scripts/localnode.sh _build/new/picad $DENOM +#CONTINUE="true" bash scripts/localnode.sh _build/new/picad $DENOM diff --git a/scripts/upgrade/v_6_6_0/pre-script.sh b/scripts/upgrade/v_6_6_0/pre-script.sh new file mode 100644 index 000000000..75eec84f8 --- /dev/null +++ b/scripts/upgrade/v_6_6_0/pre-script.sh @@ -0,0 +1,60 @@ +echo -e "\n ********** Running Pre-Scripts **********" + +BINARY=$1 +DENOM=${2:-upica} +CHAIN_DIR=$(pwd)/mytestnet + +KEY="test0" +KEY1="test1" +KEY2="test2" + + +DEFAULT_GAS_FLAG="--gas 3000000 --gas-prices 0.025$DENOM --gas-adjustment 1.5" +DEFAULT_ENV_FLAG="--keyring-backend test --chain-id localpica --home $CHAIN_DIR" + + + +echo "binary value: $BINARY" +COUNTER_CONTRACT_DIR=$(pwd)/scripts/upgrade/contracts/counter.wasm + +WALLET_1=$($BINARY keys show $KEY1 -a --keyring-backend test --home $CHAIN_DIR) +BALANCE_1=$($BINARY query bank balances $WALLET_1 --home $CHAIN_DIR -o json | jq -r '.balances[0].amount') +echo "wallet 1: $WALLET_1 - balance: $BALANCE_1" + + +############ Settingup WASM environment ############ +### Create a counter contract, then increment the counter to 1 #### +## Deploy the counter contract +TX_HASH=$($BINARY tx wasm store $COUNTER_CONTRACT_DIR --from $KEY1 $DEFAULT_ENV_FLAG $DEFAULT_GAS_FLAG -y -o json | jq -r '.txhash') + +## Get CODE ID +sleep 1 +CODE_ID=$($BINARY query tx $TX_HASH -o json | jq -r '.logs[0].events[1].attributes[1].value') +echo "code id: $CODE_ID" + +## Get contract address +# NOTE: CAN USE https://github.com/CosmWasm/wasmd/blob/9e44af168570391b0b69822952f206d35320d473/contrib/local/02-contracts.sh#L38 instantiate2 to predict address +RANDOM_HASH=$(hexdump -vn16 -e'4/4 "%08X" 1 "\n"' /dev/urandom) +TX_HASH=$($BINARY tx wasm instantiate2 $CODE_ID '{"count": 0}' $RANDOM_HASH --no-admin --label="Label with $RANDOM_HASH" --from $KEY1 $DEFAULT_ENV_FLAG $DEFAULT_GAS_FLAG -y -o json | jq -r '.txhash') + +sleep 1 +CONTRACT_ADDRESS=$($BINARY query tx $TX_HASH -o json | jq -r '.logs[0].events[1].attributes[0].value') +echo "Contract address deployed at: $CONTRACT_ADDRESS" + +## Execute the contract, increment counter to 1 +echo "wallet1: call the increment() function" +$BINARY tx wasm execute $CONTRACT_ADDRESS '{"increment":{}}' --from $KEY1 $DEFAULT_ENV_FLAG $DEFAULT_GAS_FLAG -y -o json > /dev/null + +## assert counter value to be 1 +sleep 1 +echo "wallet1: call the get_count() function" +$BINARY query wasm contract-state smart $CONTRACT_ADDRESS '{"get_count":{"addr": "'"$WALLET_1"'"}}' -o json +COUNTER_VALUE=$($BINARY query wasm contract-state smart $CONTRACT_ADDRESS '{"get_count":{"addr": "'"$WALLET_1"'"}}' -o json | jq -r '.data.count') +if [ "$COUNTER_VALUE" -ne 1 ]; then + echo "Assertion failed: Expected counter value to be 1, got $COUNTER_VALUE" + exit 1 +fi +echo "Assertion passed: Counter value is 1 as expected" + +export CONTRACT_ADDRESS=$CONTRACT_ADDRESS + diff --git a/scripts/upgrade/v_6_6_0/setup-08-wasm.sh b/scripts/upgrade/v_6_6_0/setup-08-wasm.sh new file mode 100755 index 000000000..c17aefd67 --- /dev/null +++ b/scripts/upgrade/v_6_6_0/setup-08-wasm.sh @@ -0,0 +1,23 @@ +#!/bin/bash +KEY=mykey +KEYALGO="secp256k1" +KEYRING="test" +HOME_DIR="mytestnet" +BINARY=_build/old/picad +DENOM=ppica +CHAINID=centauri-dev + +$BINARY tx gov submit-proposal scripts/08-wasm/ics10_grandpa_cw.wasm.json --from=$KEY --fees 100000${DENOM} --gas auto --keyring-backend test --home $HOME_DIR --chain-id $CHAINID -y + +sleep 5 +# TODO: fetch the propsoal id dynamically +$BINARY tx gov deposit "1" "20000000ppica" --from $KEY --fees 100000${DENOM} --gas auto --keyring-backend test --home $HOME_DIR --chain-id $CHAINID -y + +sleep 5 +$BINARY tx gov vote 1 yes --from $KEY --fees 100000${DENOM} --keyring-backend test --home $HOME_DIR --chain-id $CHAINID -y + + +## Voting time is 20s, check in localnode.sh +sleep 20 + +$BINARY query 08-wasm all-wasm-code --home $HOME_DIR --chain-id $CHAINID \ No newline at end of file diff --git a/scripts/upgrade/v_6_6_0/setup-relayer-account.sh b/scripts/upgrade/v_6_6_0/setup-relayer-account.sh new file mode 100755 index 000000000..982565cf6 --- /dev/null +++ b/scripts/upgrade/v_6_6_0/setup-relayer-account.sh @@ -0,0 +1,19 @@ +#!/bin/bash +KEY=mykey1 +RLY_KEY=mykey +KEYALGO="secp256k1" +KEYRING="test" +HOME_DIR="mytestnet" +BINARY=_build/old/picad +DENOM=ppica +CHAINID=centauri-dev + + +UPGRADE_PRPOSAL_ID=1 +RLY_KEY=$($BINARY keys show $RLY_KEY -a --keyring-backend $KEYRING --home $HOME_DIR) +echo "Address of myKEY: $RLY_KEY" + + +$BINARY tx transmiddleware add-rly --from $KEY $RLY_KEY --keyring-backend test --home $HOME_DIR --chain-id $CHAINID --fees 100000${DENOM} -y + +sleep 5 diff --git a/scripts/upload_contracts.sh b/scripts/upload_contracts.sh index c644f7dff..4cae6f1fb 100755 --- a/scripts/upload_contracts.sh +++ b/scripts/upload_contracts.sh @@ -1,21 +1,10 @@ #!/bin/bash KEY="mykey" -CHAINID="test-1" KEYALGO="secp256k1" KEYRING="test" # validate dependencies are installed command -v jq > /dev/null 2>&1 || { echo >&2 "jq not installed. More info: https://stedolan.github.io/jq/download/"; exit 1; } -# remove existing daemon -rm -rf ~/.centauri* - -~/go/bin/picad config keyring-backend $KEYRING -~/go/bin/picad config chain-id $CHAINID - -# if $KEY exists it should be deleted -echo "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" | ~/go/bin/picad keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO --recover - - -~/go/bin/picad tx 08-wasm push-wasm contracts/ics10_grandpa_cw.wasm --from mykey --keyring-backend test --gas 902152622 --fees 920166stake -y \ No newline at end of file +./_build/old/centaurid tx 08-wasm push-wasm contracts/ics10_grandpa_cw.wasm --from=mykey --gas 10002152622 --fees 10020166ppica --keyring-backend test --chain-id=localpica -y diff --git a/scripts/upload_contracts_new.sh b/scripts/upload_contracts_new.sh new file mode 100755 index 000000000..14685b26d --- /dev/null +++ b/scripts/upload_contracts_new.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +KEY="mykey" +KEYALGO="secp256k1" +KEYRING="test" + +# validate dependencies are installed +command -v jq > /dev/null 2>&1 || { echo >&2 "jq not installed. More info: https://stedolan.github.io/jq/download/"; exit 1; } + +centaurid tx ibc-wasm store-code contracts/ics10_grandpa_cw.wasm --from=mykey --title test --summary test --gas 10002152622 --fees 10020166ppica --deposit 100000000ppica --keyring-backend test --chain-id=localpica -y +sleep 5 +centaurid tx gov vote 1 yes --from=mykey --gas 10002152622 --fees 10020166ppica --keyring-backend test --chain-id=localpica -y \ No newline at end of file diff --git a/test b/test new file mode 100644 index 000000000..4acfcdd49 --- /dev/null +++ b/test @@ -0,0 +1 @@ +Error: status: Unknown, message: "recovered: unimplementedstack:\ngoroutine 745 [running]:\nruntime/debug.Stack()\n\truntime/debug/stack.go:24 +0x5e\ngithub.com/cosmos/cosmos-sdk/baseapp.NewBaseApp.newDefaultRecoveryMiddleware.func5({0x2bd4ae0, 0x3b03910})\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/recovery.go:74 +0x25\ngithub.com/cosmos/cosmos-sdk/baseapp.NewBaseApp.newDefaultRecoveryMiddleware.newRecoveryMiddleware.func7({0x2bd4ae0?, 0x3b03910?})\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/recovery.go:42 +0x2d\ngithub.com/cosmos/cosmos-sdk/baseapp.processRecovery({0x2bd4ae0, 0x3b03910}, 0x0?)\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/recovery.go:31 +0x2f\ngithub.com/cosmos/cosmos-sdk/baseapp.processRecovery({0x2bd4ae0, 0x3b03910}, 0x0?)\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/recovery.go:36 +0x53\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx.func1()\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/baseapp.go:836 +0x156\npanic({0x2bd4ae0?, 0x3b03910?})\n\truntime/panic.go:770 +0x132\ngithub.com/cosmos/ibc-go/v8/modules/light-clients/10-grandpa.(*ClientState).Validate(0xc000c9b500?)\n\tgithub.com/cosmos/ibc-go/v8@v8.1.1/modules/light-clients/10-grandpa/client_state.go:24 +0x25\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client/types.MsgCreateClient.ValidateBasic({0xc000c9b500?, 0xc000c9b560?, {0xc00112b800?, 0xc002610600?}})\n\tgithub.com/cosmos/ibc-go/v8@v8.1.1/modules/core/02-client/types/msgs.go:73 +0x11f\ngithub.com/cosmos/cosmos-sdk/baseapp.validateBasicTxMsgs({0xc000c89730?, 0x263?, 0x280?})\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/baseapp.go:625 +0x86\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx(0xc001bbe248, 0x2, {0xc0010cf680, 0x263, 0x280})\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/baseapp.go:873 +0x326\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).Simulate(...)\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/test_helpers.go:28\ngithub.com/cosmos/cosmos-sdk/x/auth/tx.txServer.Simulate({{{0x0, 0x0, 0x0}, {0x3b68088, 0xc00166d920}, 0x0, {0xc001168bd0, 0xc}, {0x3b861c0, 0xc0012a3c20}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/x/auth/tx/service.go:98 +0x12c\ngithub.com/cosmos/cosmos-sdk/types/tx._Service_Simulate_Handler.func1({0x3b43da0?, 0xc001328f60?}, {0x30a28e0?, 0xc007946500?})\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/types/tx/service.pb.go:1443 +0xcb\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).RegisterGRPCServer.func1({0x3b43da0, 0xc0010ba5a0}, {0x30a28e0, 0xc007946500}, 0xc0014a5830?, 0xc0071e5188)\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/grpcserver.go:70 +0x458\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).RegisterGRPCServer.func2.ChainUnaryServer.2.1({0x3b43da0?, 0xc0010ba5a0?}, {0x30a28e0?, 0xc007946500?})\n\tgithub.com/grpc-ecosystem/go-grpc-middleware@v1.4.0/chain.go:48 +0x45\ngithub.com/grpc-ecosystem/go-grpc-middleware/recovery.UnaryServerInterceptor.func1({0x3b43da0?, 0xc0010ba5a0?}, {0x30a28e0?, 0xc007946500?}, 0x0?, 0xc0071e5188?)\n\tgithub.com/grpc-ecosystem/go-grpc-middleware@v1.4.0/recovery/interceptors.go:33 +0xb0\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).RegisterGRPCServer.func2.ChainUnaryServer.2({0x3b43da0, 0xc0010ba5a0}, {0x30a28e0, 0xc007946500}, 0xc007946540, 0x28?)\n\tgithub.com/grpc-ecosystem/go-grpc-middleware@v1.4.0/chain.go:53 +0x123\ngithub.com/cosmos/cosmos-sdk/types/tx._Service_Simulate_Handler({0x306f1e0, 0xc000e9c000}, {0x3b43da0, 0xc0010ba5a0}, 0xc00072ab80, 0xc0010ba5d0)\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/types/tx/service.pb.go:1445 +0x143\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).RegisterGRPCServer.func2({0x306f1e0, 0xc000e9c000}, {0x3b43da0, 0xc0010ba5a0}, 0xc00072ab80, 0xc001b08120?)\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/grpcserver.go:84 +0x112\ngoogle.golang.org/grpc.(*Server).processUnaryRPC(0xc0016fa800, {0x3b43da0, 0xc0051e54d0}, {0x3b5cd40, 0xc0017e21a0}, 0xc001b08120, 0xc000d03860, 0xc000fb81c0, 0x0)\n\tgoogle.golang.org/grpc@v1.62.1/server.go:1386 +0xdf8\ngoogle.golang.org/grpc.(*Server).handleStream(0xc0016fa800, {0x3b5cd40, 0xc0017e21a0}, 0xc001b08120)\n\tgoogle.golang.org/grpc@v1.62.1/server.go:1797 +0xe87\ngoogle.golang.org/grpc.(*Server).serveStreams.func2.1()\n\tgoogle.golang.org/grpc@v1.62.1/server.go:1027 +0x8b\ncreated by google.golang.org/grpc.(*Server).serveStreams.func2 in goroutine 761\n\tgoogle.golang.org/grpc@v1.62.1/server.go:1038 +0x125\n: panic [cosmos/cosmos-sdk@v0.50.5/baseapp/recovery.go:72] with gas used: '1174'", details: [], metadata: MetadataMap { headers: {"content-type": "application/grpc", "x-cosmos-block-height": "42"} } \ No newline at end of file diff --git a/tests/interchaintest/basic_cosmos_test.go b/tests/interchaintest/basic_cosmos_test.go index 155391a8b..50b143190 100644 --- a/tests/interchaintest/basic_cosmos_test.go +++ b/tests/interchaintest/basic_cosmos_test.go @@ -2,11 +2,11 @@ package interchaintest import ( "context" + "github.com/strangelove-ventures/interchaintest/v8" "testing" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) @@ -28,7 +28,7 @@ func TestBasicCentauri(t *testing.T) { cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ { Name: "centauri", - ChainConfig: centauriConfig, + ChainConfig: CentauriConfig, NumValidators: &numVals, NumFullNodes: &numFullNodes, }, diff --git a/tests/interchaintest/chain_start_test.go b/tests/interchaintest/chain_start_test.go index c74b1708e..d63943f3e 100644 --- a/tests/interchaintest/chain_start_test.go +++ b/tests/interchaintest/chain_start_test.go @@ -4,9 +4,9 @@ import ( "context" "testing" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) @@ -28,7 +28,7 @@ func TestStartCentauri(t *testing.T) { cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ { Name: "centauri", - ChainConfig: centauriConfig, + ChainConfig: CentauriConfig, NumValidators: &numVals, NumFullNodes: &numFullNodes, }, diff --git a/tests/interchaintest/contracts/ibchooks_counter.wasm b/tests/interchaintest/contracts/ibchooks_counter.wasm new file mode 100644 index 0000000000000000000000000000000000000000..938171ef84867121a5cd52ae935f2628d3620ddd GIT binary patch literal 161782 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 literal 0 HcmV?d00001 diff --git a/tests/interchaintest/forward_timeout_test.go b/tests/interchaintest/forward_timeout_test.go new file mode 100644 index 000000000..4eb93bbc0 --- /dev/null +++ b/tests/interchaintest/forward_timeout_test.go @@ -0,0 +1,415 @@ +package interchaintest + +import ( + "context" + "encoding/json" + sdk "github.com/cosmos/cosmos-sdk/types" + "testing" + "time" + + "cosmossdk.io/math" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + chantypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" +) + +func TestTimeoutOnForward(t *testing.T) { + if testing.Short() { + t.Skip("skipping in short mode") + } + + var ( + ctx = context.Background() + client, network = interchaintest.DockerSetup(t) + rep = testreporter.NewNopReporter() + eRep = rep.RelayerExecReporter(t) + chainIdA, chainIdB, chainIdC, chainIdD = "chain-a", "chain-b", "chain-c", "chain-d" + ) + + vals := 1 + fullNodes := 0 + + baseCfg := CentauriConfig + + baseCfg.ChainID = chainIdA + configA := baseCfg + + baseCfg.ChainID = chainIdB + configB := baseCfg + + baseCfg.ChainID = chainIdC + configC := baseCfg + + baseCfg.ChainID = chainIdD + configD := baseCfg + + cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ + {Name: "pfm", ChainConfig: configA, NumFullNodes: &fullNodes, NumValidators: &vals}, + {Name: "pfm", ChainConfig: configB, NumFullNodes: &fullNodes, NumValidators: &vals}, + {Name: "pfm", ChainConfig: configC, NumFullNodes: &fullNodes, NumValidators: &vals}, + {Name: "pfm", ChainConfig: configD, NumFullNodes: &fullNodes, NumValidators: &vals}, + }) + + chains, err := cf.Chains(t.Name()) + require.NoError(t, err) + + chainA, chainB, chainC, chainD := chains[0].(*cosmos.CosmosChain), chains[1].(*cosmos.CosmosChain), chains[2].(*cosmos.CosmosChain), chains[3].(*cosmos.CosmosChain) + + r := interchaintest.NewBuiltinRelayerFactory( + ibc.CosmosRly, + zaptest.NewLogger(t), + relayer.DockerImage(&DefaultRelayer), + relayer.StartupFlags("--processor", "events", "--block-history", "100"), + ).Build(t, client, network) + + const pathAB = "ab" + const pathBC = "bc" + const pathCD = "cd" + + ic := interchaintest.NewInterchain(). + AddChain(chainA). + AddChain(chainB). + AddChain(chainC). + AddChain(chainD). + AddRelayer(r, "relayer"). + AddLink(interchaintest.InterchainLink{ + Chain1: chainA, + Chain2: chainB, + Relayer: r, + Path: pathAB, + }). + AddLink(interchaintest.InterchainLink{ + Chain1: chainB, + Chain2: chainC, + Relayer: r, + Path: pathBC, + }). + AddLink(interchaintest.InterchainLink{ + Chain1: chainC, + Chain2: chainD, + Relayer: r, + Path: pathCD, + }) + + require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ + TestName: t.Name(), + Client: client, + NetworkID: network, + SkipPathCreation: false, + })) + + t.Cleanup(func() { + _ = ic.Close() + }) + + // Start the relayer on only the path between chainA<>chainB so that the initial transfer succeeds + err = r.StartRelayer(ctx, eRep, pathAB) + require.NoError(t, err) + + t.Cleanup( + func() { + err := r.StopRelayer(ctx, eRep) + if err != nil { + t.Logf("an error occured while stopping the relayer: %s", err) + } + }, + ) + + // Fund user accounts with initial balances and get the transfer channel information between each set of chains + initBal := math.NewInt(10_000_000_000) + users := interchaintest.GetAndFundTestUsers(t, ctx, t.Name(), initBal, chainA, chainB, chainC, chainD) + + abChan, err := ibc.GetTransferChannel(ctx, r, eRep, chainIdA, chainIdB) + require.NoError(t, err) + + baChan := abChan.Counterparty + + cbChan, err := ibc.GetTransferChannel(ctx, r, eRep, chainIdC, chainIdB) + require.NoError(t, err) + + bcChan := cbChan.Counterparty + + dcChan, err := ibc.GetTransferChannel(ctx, r, eRep, chainIdD, chainIdC) + require.NoError(t, err) + + cdChan := dcChan.Counterparty + + userA, userB, userC, userD := users[0], users[1], users[2], users[3] + + // Compose the prefixed denoms and ibc denom for asserting balances + firstHopDenom := transfertypes.GetPrefixedDenom(baChan.PortID, baChan.ChannelID, chainA.Config().Denom) + secondHopDenom := transfertypes.GetPrefixedDenom(cbChan.PortID, cbChan.ChannelID, firstHopDenom) + thirdHopDenom := transfertypes.GetPrefixedDenom(dcChan.PortID, dcChan.ChannelID, secondHopDenom) + + firstHopDenomTrace := transfertypes.ParseDenomTrace(firstHopDenom) + secondHopDenomTrace := transfertypes.ParseDenomTrace(secondHopDenom) + thirdHopDenomTrace := transfertypes.ParseDenomTrace(thirdHopDenom) + + firstHopIBCDenom := firstHopDenomTrace.IBCDenom() + secondHopIBCDenom := secondHopDenomTrace.IBCDenom() + thirdHopIBCDenom := thirdHopDenomTrace.IBCDenom() + + firstHopEscrowAccount := sdk.MustBech32ifyAddressBytes(chainA.Config().Bech32Prefix, transfertypes.GetEscrowAddress(abChan.PortID, abChan.ChannelID)) + secondHopEscrowAccount := sdk.MustBech32ifyAddressBytes(chainB.Config().Bech32Prefix, transfertypes.GetEscrowAddress(bcChan.PortID, bcChan.ChannelID)) + thirdHopEscrowAccount := sdk.MustBech32ifyAddressBytes(chainC.Config().Bech32Prefix, transfertypes.GetEscrowAddress(cdChan.PortID, abChan.ChannelID)) + + zeroBal := math.ZeroInt() + transferAmount := math.NewInt(100_000) + + // Attempt to send packet from Chain A->Chain B->Chain C->Chain D + transfer := ibc.WalletAmount{ + Address: userB.FormattedAddress(), + Denom: chainA.Config().Denom, + Amount: transferAmount, + } + + retries := uint8(0) + secondHopMetadata := &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userD.FormattedAddress(), + Channel: cdChan.ChannelID, + Port: cdChan.PortID, + Retries: &retries, + }, + } + nextBz, err := json.Marshal(secondHopMetadata) + require.NoError(t, err) + next := string(nextBz) + + firstHopMetadata := &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userC.FormattedAddress(), + Channel: bcChan.ChannelID, + Port: bcChan.PortID, + Next: &next, + Retries: &retries, + Timeout: time.Second * 10, // Set low timeout for forward from chainB<>chainC + }, + } + + memo, err := json.Marshal(firstHopMetadata) + require.NoError(t, err) + + opts := ibc.TransferOptions{ + Memo: string(memo), + } + + chainBHeight, err := chainB.Height(ctx) + require.NoError(t, err) + + transferTx, err := chainA.SendIBCTransfer(ctx, abChan.ChannelID, userA.KeyName(), transfer, opts) + require.NoError(t, err) + + // Poll for MsgRecvPacket on chainB + _, err = cosmos.PollForMessage[*chantypes.MsgRecvPacket](ctx, chainB, cosmos.DefaultEncoding().InterfaceRegistry, chainBHeight, chainBHeight+20, nil) + require.NoError(t, err) + + // Stop the relayer and wait for the timeout to happen on chainC + err = r.StopRelayer(ctx, eRep) + require.NoError(t, err) + + time.Sleep(time.Second * 11) + + // Restart the relayer + err = r.StartRelayer(ctx, eRep, pathAB, pathBC, pathCD) + require.NoError(t, err) + + chainAHeight, err := chainA.Height(ctx) + require.NoError(t, err) + + chainBHeight, err = chainB.Height(ctx) + require.NoError(t, err) + + // Poll for the MsgTimeout on chainB and the MsgAck on chainA + _, err = cosmos.PollForMessage[*chantypes.MsgTimeout](ctx, chainB, chainB.Config().EncodingConfig.InterfaceRegistry, chainBHeight, chainBHeight+20, nil) + require.NoError(t, err) + + _, err = testutil.PollForAck(ctx, chainA, chainAHeight, chainAHeight+30, transferTx.Packet) + require.NoError(t, err) + + err = testutil.WaitForBlocks(ctx, 1, chainA) + require.NoError(t, err) + + // Assert balances to ensure that the funds are still on the original sending chain + chainABalance, err := chainA.GetBalance(ctx, userA.FormattedAddress(), chainA.Config().Denom) + require.NoError(t, err) + + chainBBalance, err := chainB.GetBalance(ctx, userB.FormattedAddress(), firstHopIBCDenom) + require.NoError(t, err) + + chainCBalance, err := chainC.GetBalance(ctx, userC.FormattedAddress(), secondHopIBCDenom) + require.NoError(t, err) + + chainDBalance, err := chainD.GetBalance(ctx, userD.FormattedAddress(), thirdHopIBCDenom) + require.NoError(t, err) + + require.True(t, chainABalance.Equal(initBal)) + require.True(t, chainBBalance.Equal(zeroBal)) + require.True(t, chainCBalance.Equal(zeroBal)) + require.True(t, chainDBalance.Equal(zeroBal)) + + firstHopEscrowBalance, err := chainA.GetBalance(ctx, firstHopEscrowAccount, chainA.Config().Denom) + require.NoError(t, err) + + secondHopEscrowBalance, err := chainB.GetBalance(ctx, secondHopEscrowAccount, firstHopIBCDenom) + require.NoError(t, err) + + thirdHopEscrowBalance, err := chainC.GetBalance(ctx, thirdHopEscrowAccount, secondHopIBCDenom) + require.NoError(t, err) + + require.True(t, firstHopEscrowBalance.Equal(zeroBal)) + require.True(t, secondHopEscrowBalance.Equal(zeroBal)) + require.True(t, thirdHopEscrowBalance.Equal(zeroBal)) + + // Send IBC transfer from ChainA -> ChainB -> ChainC -> ChainD that will succeed + secondHopMetadata = &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userD.FormattedAddress(), + Channel: cdChan.ChannelID, + Port: cdChan.PortID, + }, + } + nextBz, err = json.Marshal(secondHopMetadata) + require.NoError(t, err) + next = string(nextBz) + + firstHopMetadata = &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userC.FormattedAddress(), + Channel: bcChan.ChannelID, + Port: bcChan.PortID, + Next: &next, + }, + } + + memo, err = json.Marshal(firstHopMetadata) + require.NoError(t, err) + + opts = ibc.TransferOptions{ + Memo: string(memo), + } + + chainAHeight, err = chainA.Height(ctx) + require.NoError(t, err) + + transferTx, err = chainA.SendIBCTransfer(ctx, abChan.ChannelID, userA.KeyName(), transfer, opts) + require.NoError(t, err) + + _, err = testutil.PollForAck(ctx, chainA, chainAHeight, chainAHeight+30, transferTx.Packet) + require.NoError(t, err) + + err = testutil.WaitForBlocks(ctx, 5, chainA) + require.NoError(t, err) + + // Assert balances are updated to reflect tokens now being on ChainD + chainABalance, err = chainA.GetBalance(ctx, userA.FormattedAddress(), chainA.Config().Denom) + require.NoError(t, err) + + chainBBalance, err = chainB.GetBalance(ctx, userB.FormattedAddress(), firstHopIBCDenom) + require.NoError(t, err) + + chainCBalance, err = chainC.GetBalance(ctx, userC.FormattedAddress(), secondHopIBCDenom) + require.NoError(t, err) + + chainDBalance, err = chainD.GetBalance(ctx, userD.FormattedAddress(), thirdHopIBCDenom) + require.NoError(t, err) + + require.True(t, chainABalance.Equal(initBal.Sub(transferAmount))) + require.True(t, chainBBalance.Equal(zeroBal)) + require.True(t, chainCBalance.Equal(zeroBal)) + require.True(t, chainDBalance.Equal(transferAmount)) + + firstHopEscrowBalance, err = chainA.GetBalance(ctx, firstHopEscrowAccount, chainA.Config().Denom) + require.NoError(t, err) + + secondHopEscrowBalance, err = chainB.GetBalance(ctx, secondHopEscrowAccount, firstHopIBCDenom) + require.NoError(t, err) + + thirdHopEscrowBalance, err = chainC.GetBalance(ctx, thirdHopEscrowAccount, secondHopIBCDenom) + require.NoError(t, err) + + require.True(t, firstHopEscrowBalance.Equal(transferAmount)) + require.True(t, secondHopEscrowBalance.Equal(transferAmount)) + require.True(t, thirdHopEscrowBalance.Equal(transferAmount)) + + // Compose IBC tx that will attempt to go from ChainD -> ChainC -> ChainB -> ChainA but timeout between ChainB->ChainA + transfer = ibc.WalletAmount{ + Address: userC.FormattedAddress(), + Denom: thirdHopDenom, + Amount: transferAmount, + } + + secondHopMetadata = &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userA.FormattedAddress(), + Channel: baChan.ChannelID, + Port: baChan.PortID, + Timeout: 1 * time.Second, + }, + } + nextBz, err = json.Marshal(secondHopMetadata) + require.NoError(t, err) + next = string(nextBz) + + firstHopMetadata = &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userB.FormattedAddress(), + Channel: cbChan.ChannelID, + Port: cbChan.PortID, + Next: &next, + }, + } + + memo, err = json.Marshal(firstHopMetadata) + require.NoError(t, err) + + chainDHeight, err := chainD.Height(ctx) + require.NoError(t, err) + + transferTx, err = chainD.SendIBCTransfer(ctx, dcChan.ChannelID, userD.KeyName(), transfer, ibc.TransferOptions{Memo: string(memo)}) + require.NoError(t, err) + + _, err = testutil.PollForAck(ctx, chainD, chainDHeight, chainDHeight+25, transferTx.Packet) + require.NoError(t, err) + + err = testutil.WaitForBlocks(ctx, 5, chainD) + require.NoError(t, err) + + // Assert balances to ensure timeout happened and user funds are still present on ChainD + chainABalance, err = chainA.GetBalance(ctx, userA.FormattedAddress(), chainA.Config().Denom) + require.NoError(t, err) + + chainBBalance, err = chainB.GetBalance(ctx, userB.FormattedAddress(), firstHopIBCDenom) + require.NoError(t, err) + + chainCBalance, err = chainC.GetBalance(ctx, userC.FormattedAddress(), secondHopIBCDenom) + require.NoError(t, err) + + chainDBalance, err = chainD.GetBalance(ctx, userD.FormattedAddress(), thirdHopIBCDenom) + require.NoError(t, err) + + require.True(t, chainABalance.Equal(initBal.Sub(transferAmount))) + require.True(t, chainBBalance.Equal(zeroBal)) + require.True(t, chainCBalance.Equal(zeroBal)) + require.True(t, chainDBalance.Equal(transferAmount)) + + firstHopEscrowBalance, err = chainA.GetBalance(ctx, firstHopEscrowAccount, chainA.Config().Denom) + require.NoError(t, err) + + secondHopEscrowBalance, err = chainB.GetBalance(ctx, secondHopEscrowAccount, firstHopIBCDenom) + require.NoError(t, err) + + thirdHopEscrowBalance, err = chainC.GetBalance(ctx, thirdHopEscrowAccount, secondHopIBCDenom) + require.NoError(t, err) + + require.True(t, firstHopEscrowBalance.Equal(transferAmount)) + require.True(t, secondHopEscrowBalance.Equal(transferAmount)) + require.True(t, thirdHopEscrowBalance.Equal(transferAmount)) +} diff --git a/tests/interchaintest/go.mod b/tests/interchaintest/go.mod index 6d80d135e..ec2ea8a30 100644 --- a/tests/interchaintest/go.mod +++ b/tests/interchaintest/go.mod @@ -1,140 +1,166 @@ module github.com/notional-labs/composable-testnet/tests/interchaintest -go 1.20 +go 1.21 + +toolchain go1.22.2 require ( - github.com/cosmos/ibc-go/v7 v7.0.0 + cosmossdk.io/math v1.3.0 + github.com/CosmWasm/wasmd v0.42.1-0.20230928145107-894076a25cb2 + github.com/cosmos/cosmos-sdk v0.50.5 + github.com/cosmos/ibc-go/v8 v8.2.0 github.com/icza/dyno v0.0.0-20220812133438-f0b6f8a18845 - github.com/strangelove-ventures/interchaintest/v7 v7.0.0-20230322043324-cb6ba0947fff - github.com/stretchr/testify v1.8.2 - go.uber.org/zap v1.24.0 + github.com/strangelove-ventures/interchaintest/v8 v8.2.0 + github.com/stretchr/testify v1.9.0 + go.uber.org/zap v1.27.0 ) require ( - cloud.google.com/go v0.110.0 // indirect - cloud.google.com/go/compute v1.18.0 // indirect + cloud.google.com/go v0.112.0 // indirect + cloud.google.com/go/compute v1.24.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v0.12.0 // indirect - cloud.google.com/go/storage v1.29.0 // indirect - cosmossdk.io/api v0.3.1 // indirect - cosmossdk.io/core v0.6.0 // indirect - cosmossdk.io/depinject v1.0.0-alpha.3 // indirect - cosmossdk.io/errors v1.0.0-beta.7 // indirect - cosmossdk.io/math v1.0.0 // indirect - cosmossdk.io/tools/rosetta v0.2.1 // indirect + cloud.google.com/go/iam v1.1.6 // indirect + cloud.google.com/go/storage v1.36.0 // indirect + cosmossdk.io/api v0.7.3 // indirect + cosmossdk.io/collections v0.4.0 // indirect + cosmossdk.io/core v0.11.0 // indirect + cosmossdk.io/depinject v1.0.0-alpha.4 // indirect + cosmossdk.io/errors v1.0.1 // indirect + cosmossdk.io/log v1.3.1 // indirect + cosmossdk.io/store v1.0.2 // indirect + cosmossdk.io/x/feegrant v0.1.0 // indirect + cosmossdk.io/x/tx v0.13.1 // indirect + cosmossdk.io/x/upgrade v0.1.1 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect - github.com/BurntSushi/toml v1.2.1 // indirect + github.com/BurntSushi/toml v1.3.2 // indirect github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect github.com/ChainSafe/go-schnorrkel/1 v0.0.0-00010101000000-000000000000 // indirect github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 // indirect + github.com/CosmWasm/wasmvm v1.4.0 // indirect + github.com/DataDog/datadog-go v3.2.0+incompatible // indirect + github.com/DataDog/zstd v1.5.5 // indirect github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e // indirect github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec // indirect - github.com/Microsoft/go-winio v0.6.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect github.com/StirlingMarketingGroup/go-namecase v1.0.0 // indirect - github.com/armon/go-metrics v0.4.1 // indirect - github.com/avast/retry-go/v4 v4.3.4 // indirect - github.com/aws/aws-sdk-go v1.44.213 // indirect - github.com/benbjohnson/clock v1.3.0 // indirect + github.com/avast/retry-go/v4 v4.5.1 // indirect + github.com/aws/aws-sdk-go v1.44.224 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect + github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/cenkalti/backoff/v4 v4.2.0 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chzyer/readline v1.5.1 // indirect - github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect - github.com/cometbft/cometbft v0.37.1 // indirect - github.com/cometbft/cometbft-db v0.7.0 // indirect - github.com/confio/ics23/go v0.9.0 // indirect + github.com/cockroachdb/errors v1.11.1 // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v1.1.0 // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect + github.com/cometbft/cometbft v0.38.5 // indirect + github.com/cometbft/cometbft-db v0.9.1 // indirect github.com/cosmos/btcutil v1.0.5 // indirect - github.com/cosmos/cosmos-proto v1.0.0-beta.2 // indirect - github.com/cosmos/cosmos-sdk v0.47.2 // indirect + github.com/cosmos/cosmos-db v1.0.2 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.4 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/gogoproto v1.4.8 // indirect - github.com/cosmos/iavl v0.20.0 // indirect - github.com/cosmos/ics23/go v0.9.1-0.20221207100636-b1abd8678aab // indirect - github.com/cosmos/ledger-cosmos-go v0.13.0 // indirect - github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect - github.com/creachadair/taskgroup v0.5.0 // indirect + github.com/cosmos/gogoproto v1.4.11 // indirect + github.com/cosmos/iavl v1.0.1 // indirect + github.com/cosmos/ibc-go/modules/capability v1.0.0 // indirect + github.com/cosmos/ics23/go v0.10.0 // indirect + github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect github.com/danieljoos/wincred v1.1.2 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/deckarep/golang-set v1.8.0 // indirect github.com/decred/base58 v1.0.4 // indirect - github.com/decred/dcrd/crypto/blake256 v1.0.0 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.0 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect + github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect github.com/dgraph-io/badger/v2 v2.2007.4 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/docker v20.10.19+incompatible // indirect - github.com/docker/go-connections v0.4.0 // indirect + github.com/docker/docker v24.0.7+incompatible // indirect + github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/dvsekhvalnov/jose2go v1.5.0 // indirect - github.com/ethereum/go-ethereum v1.11.2 // indirect - github.com/felixge/httpsnoop v1.0.3 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/dvsekhvalnov/jose2go v1.6.0 // indirect + github.com/emicklei/dot v1.6.1 // indirect + github.com/ethereum/go-ethereum v1.13.14 // indirect + github.com/fatih/color v1.15.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/getsentry/sentry-go v0.27.0 // indirect github.com/go-kit/kit v0.12.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect - github.com/go-playground/locales v0.14.0 // indirect - github.com/go-stack/stack v1.8.1 // indirect + github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/stdr v1.2.2 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.3 // indirect - github.com/golang/glog v1.1.0 // indirect + github.com/golang/glog v1.2.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect - github.com/golang/protobuf v1.5.3 // indirect - github.com/golang/snappy v0.0.4 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/btree v1.1.2 // indirect - github.com/google/go-cmp v0.5.9 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/orderedcode v0.0.1 // indirect - github.com/google/uuid v1.3.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect - github.com/googleapis/gax-go/v2 v2.7.0 // indirect - github.com/gorilla/handlers v1.5.1 // indirect - github.com/gorilla/mux v1.8.0 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/gorilla/handlers v1.5.2 // indirect + github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/gtank/merlin v0.1.1 // indirect github.com/gtank/ristretto255 v0.1.2 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.1 // indirect + github.com/hashicorp/go-getter v1.7.3 // indirect + github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-metrics v0.5.2 // indirect + github.com/hashicorp/go-plugin v1.5.2 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.1.0 // indirect + github.com/holiman/uint256 v1.2.4 // indirect github.com/huandu/skiplist v1.2.0 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect - github.com/klauspost/compress v1.16.4 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect + github.com/klauspost/compress v1.17.7 // indirect + github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.7 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/libp2p/go-libp2p v0.27.8 // indirect + github.com/libp2p/go-libp2p v0.31.0 // indirect + github.com/linxGnu/grocksdb v1.8.12 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/manifoldco/promptui v0.9.0 // indirect - github.com/mattn/go-isatty v0.0.18 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.0 // indirect - github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20230413215336-5bd2aea337ae // indirect + github.com/minio/sha256-simd v1.0.1 // indirect + github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20230913220906-b988ea7da0c2 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -142,85 +168,94 @@ require ( github.com/mtibben/percent v0.2.1 // indirect github.com/multiformats/go-base32 v0.1.0 // indirect github.com/multiformats/go-base36 v0.2.0 // indirect - github.com/multiformats/go-multiaddr v0.9.0 // indirect + github.com/multiformats/go-multiaddr v0.11.0 // indirect github.com/multiformats/go-multibase v0.2.0 // indirect - github.com/multiformats/go-multicodec v0.8.1 // indirect - github.com/multiformats/go-multihash v0.2.1 // indirect + github.com/multiformats/go-multicodec v0.9.0 // indirect + github.com/multiformats/go-multihash v0.2.3 // indirect github.com/multiformats/go-varint v0.0.7 // indirect - github.com/onsi/gomega v1.27.4 // indirect + github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect + github.com/oklog/run v1.1.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc2 // indirect github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.0.7 // indirect - github.com/petermattis/goid v0.0.0-20230222173705-8ff7bb262a50 // indirect + github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect github.com/pierrec/xxHash v0.1.5 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.14.0 // indirect - github.com/prometheus/client_model v0.3.0 // indirect - github.com/prometheus/common v0.42.0 // indirect - github.com/prometheus/procfs v0.9.0 // indirect - github.com/rakyll/statik v0.1.7 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_model v0.6.0 // indirect + github.com/prometheus/common v0.47.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rs/cors v1.8.3 // indirect + github.com/rs/zerolog v1.32.0 // indirect + github.com/sagikazarmark/locafero v0.4.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/sirupsen/logrus v1.9.0 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect - github.com/spf13/afero v1.9.4 // indirect - github.com/spf13/cast v1.5.0 // indirect - github.com/spf13/cobra v1.7.0 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.6.0 // indirect + github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.15.0 // indirect - github.com/subosito/gotenv v1.4.2 // indirect + github.com/spf13/viper v1.18.2 // indirect + github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect - github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tendermint/go-amino v0.16.0 // indirect - github.com/tidwall/btree v1.6.0 // indirect + github.com/tidwall/btree v1.7.0 // indirect github.com/tyler-smith/go-bip32 v1.0.0 // indirect github.com/tyler-smith/go-bip39 v1.1.0 // indirect github.com/ulikunitz/xz v0.5.11 // indirect - github.com/zondax/hid v0.9.1 // indirect - github.com/zondax/ledger-go v0.14.1 // indirect - go.etcd.io/bbolt v1.3.7 // indirect + github.com/zondax/hid v0.9.2 // indirect + github.com/zondax/ledger-go v0.14.3 // indirect + go.etcd.io/bbolt v1.3.8 // indirect go.opencensus.io v0.24.0 // indirect - go.uber.org/atomic v1.10.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect + go.opentelemetry.io/otel v1.22.0 // indirect + go.opentelemetry.io/otel/metric v1.22.0 // indirect + go.opentelemetry.io/otel/trace v1.22.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.9.0 // indirect - golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect - golang.org/x/mod v0.10.0 // indirect - golang.org/x/net v0.10.0 // indirect - golang.org/x/oauth2 v0.5.0 // indirect - golang.org/x/sync v0.1.0 // indirect - golang.org/x/sys v0.8.0 // indirect - golang.org/x/term v0.8.0 // indirect - golang.org/x/text v0.9.0 // indirect - golang.org/x/tools v0.8.0 // indirect - golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.111.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230301171018-9ab4bdc49ad5 // indirect - google.golang.org/grpc v1.54.0 // indirect - google.golang.org/protobuf v1.30.0 // indirect + golang.org/x/crypto v0.20.0 // indirect + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/oauth2 v0.16.0 // indirect + golang.org/x/sync v0.6.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/term v0.17.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/time v0.5.0 // indirect + golang.org/x/tools v0.18.0 // indirect + google.golang.org/api v0.162.0 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c // indirect + google.golang.org/grpc v1.62.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - lukechampine.com/blake3 v1.1.7 // indirect + gotest.tools/v3 v3.5.1 // indirect + lukechampine.com/blake3 v1.2.1 // indirect lukechampine.com/uint128 v1.2.0 // indirect modernc.org/cc/v3 v3.40.0 // indirect modernc.org/ccgo/v3 v3.16.13 // indirect - modernc.org/libc v1.22.5 // indirect - modernc.org/mathutil v1.5.0 // indirect - modernc.org/memory v1.5.0 // indirect + modernc.org/libc v1.29.0 // indirect + modernc.org/mathutil v1.6.0 // indirect + modernc.org/memory v1.7.2 // indirect modernc.org/opt v0.1.3 // indirect - modernc.org/sqlite v1.22.1 // indirect + modernc.org/sqlite v1.28.0 // indirect modernc.org/strutil v1.1.3 // indirect modernc.org/token v1.1.0 // indirect nhooyr.io/websocket v1.8.7 // indirect - pgregory.net/rapid v0.5.5 // indirect - sigs.k8s.io/yaml v1.3.0 // indirect + pgregory.net/rapid v1.1.0 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect ) replace ( @@ -228,9 +263,6 @@ replace ( github.com/ChainSafe/go-schnorrkel/1 => github.com/ChainSafe/go-schnorrkel v1.0.0 // Use notional lab version of async-icq - github.com/strangelove-ventures/async-icq/v7 v7.0.0-20230317170414-3c3da64f93d4 => github.com/notional-labs/async-icq/v7 v7.0.0 - - github.com/strangelove-ventures/interchaintest/v7 v7.0.0-20230322043324-cb6ba0947fff => github.com/notional-labs/interchaintest/v7 v7.1.3-0.20230614031803-d1462d548734 github.com/vedhavyas/go-subkey => github.com/strangelove-ventures/go-subkey v1.0.7 ) diff --git a/tests/interchaintest/go.sum b/tests/interchaintest/go.sum index 29d07dbbc..71a05ef20 100644 --- a/tests/interchaintest/go.sum +++ b/tests/interchaintest/go.sum @@ -3,7 +3,6 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= @@ -16,7 +15,6 @@ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOY cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= @@ -32,8 +30,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= -cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= +cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -70,8 +68,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.18.0 h1:FEigFqoDbys2cvFkZ9Fjq4gnHBP55anJ0yQyau2f9oY= -cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= +cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= @@ -111,13 +109,12 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v0.12.0 h1:DRtTY29b75ciH6Ov1PHb4/iat2CLCvrOm40Q0a6DFpE= -cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= @@ -171,12 +168,11 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.29.0 h1:6weCgzRvMg7lzuUurI4697AqIRPU1SvzHhynwpW31jI= -cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= +cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= +cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= @@ -188,18 +184,34 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cosmossdk.io/api v0.3.1 h1:NNiOclKRR0AOlO4KIqeaG6PS6kswOMhHD0ir0SscNXE= -cosmossdk.io/api v0.3.1/go.mod h1:DfHfMkiNA2Uhy8fj0JJlOCYOBp4eWUUJ1te5zBGNyIw= -cosmossdk.io/core v0.6.0 h1:V2zyaMVFN6hJSVENYx2XE9CMhzqwJPMjzSQpj0MyXAU= -cosmossdk.io/core v0.6.0/go.mod h1:YSFzBcKOf/U24e/sa6WFaYSrlZl5zgNvnWwjfFyPniw= -cosmossdk.io/depinject v1.0.0-alpha.3 h1:6evFIgj//Y3w09bqOUOzEpFj5tsxBqdc5CfkO7z+zfw= -cosmossdk.io/depinject v1.0.0-alpha.3/go.mod h1:eRbcdQ7MRpIPEM5YUJh8k97nxHpYbc3sMUnEtt8HPWU= -cosmossdk.io/errors v1.0.0-beta.7 h1:gypHW76pTQGVnHKo6QBkb4yFOJjC+sUGRc5Al3Odj1w= -cosmossdk.io/errors v1.0.0-beta.7/go.mod h1:mz6FQMJRku4bY7aqS/Gwfcmr/ue91roMEKAmDUDpBfE= -cosmossdk.io/math v1.0.0 h1:ro9w7eKx23om2tZz/VM2Pf+z2WAbGX1yDQQOJ6iGeJw= -cosmossdk.io/math v1.0.0/go.mod h1:Ygz4wBHrgc7g0N+8+MrnTfS9LLn9aaTGa9hKopuym5k= -cosmossdk.io/tools/rosetta v0.2.1 h1:ddOMatOH+pbxWbrGJKRAawdBkPYLfKXutK9IETnjYxw= -cosmossdk.io/tools/rosetta v0.2.1/go.mod h1:Pqdc1FdvkNV3LcNIkYWt2RQY6IP1ge6YWZk8MhhO9Hw= +cosmossdk.io/api v0.7.3 h1:V815i8YOwOAQa1rLCsSMjVG5Gnzs02JLq+l7ks8s1jk= +cosmossdk.io/api v0.7.3/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/client/v2 v2.0.0-beta.1 h1:XkHh1lhrLYIT9zKl7cIOXUXg2hdhtjTPBUfqERNA1/Q= +cosmossdk.io/client/v2 v2.0.0-beta.1/go.mod h1:JEUSu9moNZQ4kU3ir1DKD5eU4bllmAexrGWjmb9k8qU= +cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= +cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= +cosmossdk.io/core v0.11.0 h1:vtIafqUi+1ZNAE/oxLOQQ7Oek2n4S48SWLG8h/+wdbo= +cosmossdk.io/core v0.11.0/go.mod h1:LaTtayWBSoacF5xNzoF8tmLhehqlA9z1SWiPuNC6X1w= +cosmossdk.io/depinject v1.0.0-alpha.4 h1:PLNp8ZYAMPTUKyG9IK2hsbciDWqna2z1Wsl98okJopc= +cosmossdk.io/depinject v1.0.0-alpha.4/go.mod h1:HeDk7IkR5ckZ3lMGs/o91AVUc7E596vMaOmslGFM3yU= +cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= +cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= +cosmossdk.io/log v1.3.1 h1:UZx8nWIkfbbNEWusZqzAx3ZGvu54TZacWib3EzUYmGI= +cosmossdk.io/log v1.3.1/go.mod h1:2/dIomt8mKdk6vl3OWJcPk2be3pGOS8OQaLUM/3/tCM= +cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= +cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= +cosmossdk.io/store v1.0.2 h1:lSg5BTvJBHUDwswNNyeh4K/CbqiHER73VU4nDNb8uk0= +cosmossdk.io/store v1.0.2/go.mod h1:EFtENTqVTuWwitGW1VwaBct+yDagk7oG/axBMPH+FXs= +cosmossdk.io/x/circuit v0.1.0 h1:IAej8aRYeuOMritczqTlljbUVHq1E85CpBqaCTwYgXs= +cosmossdk.io/x/circuit v0.1.0/go.mod h1:YDzblVE8+E+urPYQq5kq5foRY/IzhXovSYXb4nwd39w= +cosmossdk.io/x/evidence v0.1.0 h1:J6OEyDl1rbykksdGynzPKG5R/zm6TacwW2fbLTW4nCk= +cosmossdk.io/x/evidence v0.1.0/go.mod h1:hTaiiXsoiJ3InMz1uptgF0BnGqROllAN8mwisOMMsfw= +cosmossdk.io/x/feegrant v0.1.0 h1:c7s3oAq/8/UO0EiN1H5BIjwVntujVTkYs35YPvvrdQk= +cosmossdk.io/x/feegrant v0.1.0/go.mod h1:4r+FsViJRpcZif/yhTn+E0E6OFfg4n0Lx+6cCtnZElU= +cosmossdk.io/x/tx v0.13.1 h1:Mg+EMp67Pz+NukbJqYxuo8uRp7N/a9uR+oVS9pONtj8= +cosmossdk.io/x/tx v0.13.1/go.mod h1:CBCU6fsRVz23QGFIQBb1DNX2DztJCf3jWyEkHY2nJQ0= +cosmossdk.io/x/upgrade v0.1.1 h1:aoPe2gNvH+Gwt/Pgq3dOxxQVU3j5P6Xf+DaUJTDZATc= +cosmossdk.io/x/upgrade v0.1.1/go.mod h1:MNLptLPcIFK9CWt7Ra//8WUZAxweyRDNcbs5nkOcQy0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= @@ -207,10 +219,11 @@ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMb github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= -github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= @@ -218,28 +231,36 @@ github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRr github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 h1:oknQF/iIhf5lVjbwjsVDzDByupRhga8nhA3NAmwyHDA= github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420/go.mod h1:KYkiMX5AbOlXXYfxkrYPrRPV6EbVUALTQh5ptUOJzu8= +github.com/CosmWasm/wasmd v0.42.1-0.20230928145107-894076a25cb2 h1:j8J9LnhC6IikohLEYMAFX0xPQmgPez9vsj0rNQISkiE= +github.com/CosmWasm/wasmd v0.42.1-0.20230928145107-894076a25cb2/go.mod h1:3sCglc35LoFUGmh4a/auoJALitaE4qw+jAqK53ak7+s= +github.com/CosmWasm/wasmvm v1.4.0 h1:84I3MlvvzcOo2z+ed0ztPi7eeDNk6/sYuK76uyXP1nI= +github.com/CosmWasm/wasmvm v1.4.0/go.mod h1:vW/E3h8j9xBQs9bCoijDuawKo9kCtxOaS8N8J7KFtkc= +github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= +github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e h1:ahyvB3q25YnZWly5Gq1ekg6jcmWaGj/vG/MhF4aisoc= github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:kGUqhHd//musdITWjFvNTHn90WG9bMLBEPQZ17Cmlpw= github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec h1:1Qb69mGp/UtRPn422BH4/Y4Q3SLUrD9KHuDkm8iodFc= github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec/go.mod h1:CD8UlnlLDiqb36L110uqiP2iSflVjx9g/3U9hCI4q2U= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= -github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/sarama v1.20.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= +github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= +github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/StirlingMarketingGroup/go-namecase v1.0.0 h1:2CzaNtCzc4iNHirR+5ru9OzGg8rQp860gqLBFqRI02Y= github.com/StirlingMarketingGroup/go-namecase v1.0.0/go.mod h1:ZsoSKcafcAzuBx+sndbxHu/RjDcDTrEdT4UvhniHfio= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= +github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/alecthomas/participle/v2 v2.0.0-alpha7 h1:cK4vjj0VSgb3lN1nuKA5F7dw+1s1pWBe5bx7nNCnN+c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -251,20 +272,17 @@ github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= -github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/avast/retry-go/v4 v4.3.4 h1:pHLkL7jvCvP317I8Ge+Km2Yhntv3SdkJm7uekkqbKhM= -github.com/avast/retry-go/v4 v4.3.4/go.mod h1:rv+Nla6Vk3/ilU0H51VHddWHiwimzX66yZ0JT6T+UvE= +github.com/avast/retry-go/v4 v4.5.1 h1:AxIx0HGi4VZ3I02jr78j5lZ3M6x1E0Ivxa6b0pUUh7o= +github.com/avast/retry-go/v4 v4.5.1/go.mod h1:/sipNsvNB3RRuT5iNcb6h73nw3IBmXJ/H3XrCQYSOpc= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.44.213 h1:WahquyWs7cQdz0vpDVWyWETEemgSoORx0PbWL9oz2WA= -github.com/aws/aws-sdk-go v1.44.213/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= +github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= -github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -274,11 +292,18 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s= github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= +github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= -github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ= +github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= +github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ= +github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= +github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= +github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -316,74 +341,88 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ= +github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= -github.com/cockroachdb/apd/v3 v3.1.0 h1:MK3Ow7LH0W8zkd5GMKA1PvS9qG3bWFI95WaVNfyZJ/w= +github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= -github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.37.1 h1:KLxkQTK2hICXYq21U2hn1W5hOVYUdQgDQ1uB+90xPIg= -github.com/cometbft/cometbft v0.37.1/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= -github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= -github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= -github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= -github.com/confio/ics23/go v0.9.0/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= +github.com/cometbft/cometbft v0.38.5 h1:4lOcK5VTPrfbLOhNHmPYe6c7eDXHtBdMCQuKbAfFJdU= +github.com/cometbft/cometbft v0.38.5/go.mod h1:0tqKin+KQs8zDwzYD8rPHzSBIDNPuB4NrwwGDNb/hUg= +github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= +github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= +github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-proto v1.0.0-beta.2 h1:X3OKvWgK9Gsejo0F1qs5l8Qn6xJV/AzgIWR2wZ8Nua8= -github.com/cosmos/cosmos-proto v1.0.0-beta.2/go.mod h1:+XRCLJ14pr5HFEHIUcn51IKXD1Fy3rkEQqt4WqmN4V0= -github.com/cosmos/cosmos-sdk v0.47.2 h1:9rSriCoiJD+4F+tEDobyM8V7HF5BtY5Ef4VYNig96s0= -github.com/cosmos/cosmos-sdk v0.47.2/go.mod h1:zYzgI8w8hhotXTSoGbbSOAKfpJTx4wOy4XgbaKhtRtc= +github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs= +github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= +github.com/cosmos/cosmos-proto v1.0.0-beta.4 h1:aEL7tU/rLOmxZQ9z4i7mzxcLbSCY48OdY7lIWTLG7oU= +github.com/cosmos/cosmos-proto v1.0.0-beta.4/go.mod h1:oeB+FyVzG3XrQJbJng0EnV8Vljfk9XvTIpGILNU/9Co= +github.com/cosmos/cosmos-sdk v0.50.5 h1:MOEi+DKYgW67YaPgB+Pf+nHbD3V9S/ayitRKJYLfGIA= +github.com/cosmos/cosmos-sdk v0.50.5/go.mod h1:oV/k6GJgXV9QPoM2fsYDPPsyPBgQbdotv532O6Mz1OQ= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.8 h1:BrHKc6WFZt8+jRV71vKSQE+JrfF+JAnzrKo2VP7wIZ4= -github.com/cosmos/gogoproto v1.4.8/go.mod h1:hnb0DIEWTv+wdNzNcqus5xCQXq5+CXauq1FJuurRfVY= -github.com/cosmos/iavl v0.20.0 h1:fTVznVlepH0KK8NyKq8w+U7c2L6jofa27aFX6YGlm38= -github.com/cosmos/iavl v0.20.0/go.mod h1:WO7FyvaZJoH65+HFOsDir7xU9FWk2w9cHXNW1XHcl7A= -github.com/cosmos/ibc-go/v7 v7.0.0 h1:j4kyywlG0hhDmT9FmSaR5iCIka7Pz7kJTxGWY1nlV9Q= -github.com/cosmos/ibc-go/v7 v7.0.0/go.mod h1:BFh8nKWjr5zeR2OZfhkzdgDzj1+KjRn3aJLpwapStj8= -github.com/cosmos/ics23/go v0.9.1-0.20221207100636-b1abd8678aab h1:I9ialKTQo7248V827Bba4OuKPmk+FPzmTVHsLXaIJWw= -github.com/cosmos/ics23/go v0.9.1-0.20221207100636-b1abd8678aab/go.mod h1:2CwqasX5dSD7Hbp/9b6lhK6BwoBDCBldx7gPKRukR60= -github.com/cosmos/ledger-cosmos-go v0.13.0 h1:ex0CvCxToSR7j5WjrghPu2Bu9sSXKikjnVvUryNnx4s= -github.com/cosmos/ledger-cosmos-go v0.13.0/go.mod h1:ZcqYgnfNJ6lAXe4HPtWgarNEY+B74i+2/8MhZw4ziiI= -github.com/cosmos/rosetta-sdk-go v0.10.0 h1:E5RhTruuoA7KTIXUcMicL76cffyeoyvNybzUGSKFTcM= -github.com/cosmos/rosetta-sdk-go v0.10.0/go.mod h1:SImAZkb96YbwvoRkzSMQB6noNJXFgWl/ENIznEoYQI4= +github.com/cosmos/gogoproto v1.4.11 h1:LZcMHrx4FjUgrqQSWeaGC1v/TeuVFqSLa43CC6aWR2g= +github.com/cosmos/gogoproto v1.4.11/go.mod h1:/g39Mh8m17X8Q/GDEs5zYTSNaNnInBSohtaxzQnYq1Y= +github.com/cosmos/iavl v1.0.1 h1:D+mYbcRO2wptYzOM1Hxl9cpmmHU1ZEt9T2Wv5nZTeUw= +github.com/cosmos/iavl v1.0.1/go.mod h1:8xIUkgVvwvVrBu81scdPty+/Dx9GqwHnAvXz4cwF7RY= +github.com/cosmos/ibc-go/modules/capability v1.0.0 h1:r/l++byFtn7jHYa09zlAdSeevo8ci1mVZNO9+V0xsLE= +github.com/cosmos/ibc-go/modules/capability v1.0.0/go.mod h1:D81ZxzjZAe0ZO5ambnvn1qedsFQ8lOwtqicG6liLBco= +github.com/cosmos/ibc-go/v8 v8.2.0 h1:7oCzyy1sZCcgpeQLnHxC56brsSz3KWwQGKXalXwXFzE= +github.com/cosmos/ibc-go/v8 v8.2.0/go.mod h1:wj3qx75iC/XNnsMqbPDCIGs0G6Y3E/lo3bdqCyoCy+8= +github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= +github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= +github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= +github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creachadair/taskgroup v0.5.0 h1:44w3girt9OM0yPPoqGDO7u8+XEk6uG49PhnEn+8+nHY= -github.com/creachadair/taskgroup v0.5.0/go.mod h1:qiXUOSrbwAY3u0JPGTzObbE3yf9hcXHDKBZ2ZjpCbgM= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/cucumber/common/gherkin/go/v22 v22.0.0 h1:4K8NqptbvdOrjL9DEea6HFjSpbdT9+Q5kgLpmmsHYl0= -github.com/cucumber/common/messages/go/v17 v17.1.1 h1:RNqopvIFyLWnKv0LfATh34SWBhXeoFTJnSrgm9cT/Ts= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4= github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI= +github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/base58 v1.0.4 h1:QJC6B0E0rXOPA8U/kw2rP+qiRJsUaE2Er+pYb3siUeA= github.com/decred/base58 v1.0.4/go.mod h1:jJswKPEdvpFpvf7dsDvFZyLT22xZ9lWqEByX38oGd9E= github.com/decred/dcrd/chaincfg/chainhash v1.0.2 h1:rt5Vlq/jM3ZawwiacWjPa+smINyLRN07EO0cNBV6DGU= github.com/decred/dcrd/chaincfg/chainhash v1.0.2/go.mod h1:BpbrGgrPTr3YJYRN3Bm+D9NuaFd+zGyNeIKgrhCXK60= -github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.0 h1:3GIJYXQDAKpLEFriGFN8SbSffak10UXHGdIcFaMPykY= -github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.0/go.mod h1:3s92l0paYkZoIHuj4X93Teg/HB7eGM9x/zokGw+u4mY= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= +github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= +github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 h1:18HurQ6DfHeNvwIjvOmrgr44bPdtVaQAe/WWwHg9goM= +github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1/go.mod h1:XmyzkaXBy7ZvHdrTAlXAjpog8qKSAWa3ze7yqzWmgmc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= @@ -397,22 +436,24 @@ github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WA github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v20.10.19+incompatible h1:lzEmjivyNHFHMNAFLXORMBXyGIhw/UP4DvJwvyKYq64= -github.com/docker/docker v20.10.19+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM= +github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= +github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQxaLAeM= -github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= +github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/emicklei/dot v1.6.1 h1:ujpDlBkkwgWUY+qPId5IwapRW/xEoligRSYjioR6DFI= +github.com/emicklei/dot v1.6.1/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -424,29 +465,37 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.11.2 h1:z/luyejbevDCAMUUiu0rc80dxJxOnpoG58k5o0tSawc= -github.com/ethereum/go-ethereum v1.11.2/go.mod h1:DuefStAgaxoaYGLR0FueVcVbehmn5n9QUcVrMCuOvuc= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= +github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= +github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/ethereum/go-ethereum v1.13.14 h1:EwiY3FZP94derMCIam1iW4HFVrSgIcpsu0HwTQtm6CQ= +github.com/ethereum/go-ethereum v1.13.14/go.mod h1:TN8ZiHrdJwSe8Cb6x+p0hs5CxhJZPbqB7hHkaUXcmIU= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= -github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= +github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -455,6 +504,7 @@ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= @@ -462,37 +512,45 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= -github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= +github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= -github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= +github.com/gobwas/ws v1.2.1 h1:F2aeBZrm2NDsc7vbovKrWSogd4wvfAxg0FQ89/iqOTk= +github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/gofrs/uuid v4.3.0+incompatible h1:CaSVZxm5B+7o45rtab4jC2G37WGYX1zQfuU2i6DSvnc= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -527,12 +585,13 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= @@ -551,17 +610,20 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -573,24 +635,27 @@ github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20230405160723-4a4c7d95572b h1:Qcx5LM0fSiks9uCyFZwDBUasd3lxd1RM0GYpL+Li5o4= +github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b h1:h9U78+dx9a4BKdQkBBos92HalKpaGKHrp+3Uo6yTodo= +github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= -github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -600,26 +665,25 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1YupQSSQ= -github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= -github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= @@ -638,13 +702,19 @@ github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.1 h1:SWiSWN/42qdpR0MdhaOc/bLR48PLuP1ZQtYLRlM69uY= -github.com/hashicorp/go-getter v1.7.1/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.3 h1:bN2+Fw9XPFvOCjB0UOevFIMICZ7G2XSQHzfvLUyOM5E= +github.com/hashicorp/go-getter v1.7.3/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= +github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-metrics v0.5.2 h1:ErEYO2f//CjKsUDw4SmLzelsK6L3ZmOAR/4P9iS7ruY= +github.com/hashicorp/go-metrics v0.5.2/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= +github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= @@ -652,30 +722,37 @@ github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoD github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/hdevalence/ed25519consensus v0.1.0 h1:jtBwzzcHuTmFrQN6xQZn6CQEO/V9f7HsjsjeEZ6auqU= github.com/hdevalence/ed25519consensus v0.1.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= +github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= +github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/icza/dyno v0.0.0-20220812133438-f0b6f8a18845 h1:H+uM0Bv88eur3ZSsd2NGKg3YIiuXxwxtlN7HjE66UTU= @@ -688,7 +765,8 @@ github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLf github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= -github.com/jhump/protoreflect v1.12.1-0.20220721211354-060cc04fc18b h1:izTof8BKh/nE1wrKOrloNA5q4odOarjf+Xpe+4qow98= +github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= +github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= @@ -704,6 +782,7 @@ github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= @@ -717,31 +796,33 @@ github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.16.4 h1:91KN02FnsOYhuunwU4ssRe8lc2JosWmizWa91B5v1PU= -github.com/klauspost/compress v1.16.4/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= +github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= -github.com/libp2p/go-libp2p v0.27.8 h1:IX5x/4yKwyPQeVS2AXHZ3J4YATM9oHBGH1gBc23jBAI= -github.com/libp2p/go-libp2p v0.27.8/go.mod h1:eCFFtd0s5i/EVKR7+5Ki8bM7qwkNW3TPTTSSW9sz8NE= +github.com/libp2p/go-libp2p v0.31.0 h1:LFShhP8F6xthWiBBq3euxbKjZsoRajVEyBS9snfHxYg= +github.com/libp2p/go-libp2p v0.31.0/go.mod h1:W/FEK1c/t04PbRH3fA9i5oucu5YcgrG0JVoBWT1B7Eg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linxGnu/grocksdb v1.8.12 h1:1/pCztQUOa3BX/1gR3jSZDoaKFpeHFvQ1XrqZpSvZVo= +github.com/linxGnu/grocksdb v1.8.12/go.mod h1:xZCIb5Muw+nhbDK4Y5UJuOrin5MceOuiXkVUR7vp4WY= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= @@ -749,27 +830,33 @@ github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3v github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= -github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= +github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b h1:QrHweqAtyJ9EwCaGHBu1fghwxIPiopAHV06JlXrMHjk= github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b/go.mod h1:xxLb2ip6sSUts3g1irPVHyk/DGslwQsNOo9I7smJfNU= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= -github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= -github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20230413215336-5bd2aea337ae h1:ZYbJh4TLwfSuSQe6DT/1982SfNNBcmvzrX5FycfSrmo= -github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20230413215336-5bd2aea337ae/go.mod h1:XexEkZgpnQ3sqUYz84DFoVUcDake6G/tYHrwdbdERhM= +github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= +github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= +github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20230913220906-b988ea7da0c2 h1:G/cVeTAbB9S/6FSWWqpFV0v49hiuHLbJPu9hTZ0UR2A= +github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20230913220906-b988ea7da0c2/go.mod h1:Q5BxOd9FxJqYp4vCiLGVdetecPcWTmUQIu0bRigYosU= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -783,14 +870,17 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae h1:O4SWKdcHVCvYqyDV+9CJA1fcDN2L11Bule0iFy3YlAI= +github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= +github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= @@ -799,14 +889,14 @@ github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aG github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= -github.com/multiformats/go-multiaddr v0.9.0 h1:3h4V1LHIk5w4hJHekMKWALPXErDfz/sggzwC/NcqbDQ= -github.com/multiformats/go-multiaddr v0.9.0/go.mod h1:mI67Lb1EeTOYb8GQfL/7wpIZwc46ElrvzhYnoJOmTT0= +github.com/multiformats/go-multiaddr v0.11.0 h1:XqGyJ8ufbCE0HmTDwx2kPdsrQ36AGPZNZX6s6xfJH10= +github.com/multiformats/go-multiaddr v0.11.0/go.mod h1:gWUm0QLR4thQ6+ZF6SXUw8YjtwQSPapICM+NmCkxHSM= github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk= -github.com/multiformats/go-multicodec v0.8.1 h1:ycepHwavHafh3grIbR1jIXnKCsFm0fqsfEOsJ8NtKE8= -github.com/multiformats/go-multicodec v0.8.1/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k= -github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108= -github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= +github.com/multiformats/go-multicodec v0.9.0 h1:pb/dlPnzee/Sxv/j4PmkDRxCOi3hXTz3IbPKOXWJkmg= +github.com/multiformats/go-multicodec v0.9.0/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k= +github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U= +github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -821,13 +911,15 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/notional-labs/interchaintest/v7 v7.1.3-0.20230614031803-d1462d548734 h1:rcZekspUfq4+BRK0CUfG5kgeajtiVgv7gC2uyMHCcnQ= -github.com/notional-labs/interchaintest/v7 v7.1.3-0.20230614031803-d1462d548734/go.mod h1:hLJK59PeInGu+LIXlcp8O5TGrYigtynDUPUOkrIEZMM= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -841,15 +933,15 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.20.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= -github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= +github.com/onsi/gomega v1.27.8 h1:gegWiwZjBsf2DgiSbf5hpokZ98JVDMcWkUiigk6/KXc= +github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= +github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -859,6 +951,7 @@ github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJ github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= +github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= @@ -867,24 +960,27 @@ github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtP github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.0.7 h1:muncTPStnKRos5dpVKULv2FVd4bMOhNePj9CjgDb8Us= -github.com/pelletier/go-toml/v2 v2.0.7/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= +github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= +github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20230222173705-8ff7bb262a50 h1:mDrFjGWmndQXmVx3giRScTbkltpPcnGEWG1GorsuiJ4= -github.com/petermattis/goid v0.0.0-20230222173705-8ff7bb262a50/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc h1:8bQZVK1X6BJR/6nYUPxQEP+ReTsceJTKizeuwjWOPUA= +github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/xxHash v0.1.5 h1:n/jBpwTHiER4xYvK3/CdPVnLDPchj8eTJFFLUb4QHBo= github.com/pierrec/xxHash v0.1.5/go.mod h1:w2waW5Zoa/Wc4Yqe0wgrIYAGKqRMf7czn2HNKXmuL+I= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= @@ -892,59 +988,65 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= -github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= +github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= +github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= -github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= -github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/regen-network/gocuke v0.6.2 h1:pHviZ0kKAq2U2hN2q3smKNxct6hS0mGByFMHGnWA97M= github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= -github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= +github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -956,37 +1058,40 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.9.4 h1:Sd43wM1IWz/s1aVXdOBkjJvuP8UdyqioeE4AmM0QsBs= -github.com/spf13/afero v1.9.4/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= -github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= +github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= +github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/strangelove-ventures/interchaintest/v8 v8.2.0 h1:EZXPvZXL1y/kvh9XI04A2stL+2UMvykhNUv28euRnL8= +github.com/strangelove-ventures/interchaintest/v8 v8.2.0/go.mod h1:pupV0YN3A56/u9kHj9U1F8MdDUEolBIn05F0W1q/0oI= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.1.5-0.20170601210322-f6abca593680/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -998,20 +1103,21 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= -github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg= -github.com/tidwall/btree v1.6.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw= -github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o= +github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= +github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/tyler-smith/go-bip32 v1.0.0 h1:sDR9juArbUgX+bO/iblgZnMPeWY1KZMUC2AFUJdv5KE= @@ -1021,8 +1127,9 @@ github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3C github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= +github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= @@ -1036,13 +1143,13 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zondax/hid v0.9.1 h1:gQe66rtmyZ8VeGFcOpbuH3r7erYtNEAezCAYu8LdkJo= -github.com/zondax/hid v0.9.1/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= -github.com/zondax/ledger-go v0.14.1 h1:Pip65OOl4iJ84WTpA4BKChvOufMhhbxED3BaihoZN4c= -github.com/zondax/ledger-go v0.14.1/go.mod h1:fZ3Dqg6qcdXWSOJFKMG8GCTnD7slO/RL2feOQv8K320= +github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= +github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= +github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= -go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= +go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -1055,22 +1162,37 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= +go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= +go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= +go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= +go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= +go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= +go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= +go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20170613210332-850760c427c5/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1083,11 +1205,9 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1099,8 +1219,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1127,8 +1247,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1169,7 +1289,6 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= @@ -1189,8 +1308,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1216,8 +1335,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.5.0 h1:HuArIo48skDwlrvM3sEdHXElYslAMsf3KwRkkW4MC4s= -golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= +golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= +golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1232,8 +1351,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1289,13 +1408,11 @@ golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1307,6 +1424,8 @@ golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1323,21 +1442,21 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1347,14 +1466,16 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.1.0 h1:xYY+Bajn2a7VBmTM5GikTmnK8ZuX8YgnQCqZpbBNtmA= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1374,6 +1495,7 @@ golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1408,7 +1530,6 @@ golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= @@ -1416,8 +1537,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= -golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1476,8 +1597,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.111.0 h1:bwKi+z2BsdwYFRKrqwutM+axAlYLz83gt5pDSXCJT+0= -google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= +google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= +google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1485,8 +1606,9 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1526,10 +1648,8 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1596,8 +1716,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20230301171018-9ab4bdc49ad5 h1:/cadn7taPtPlCgiWNetEPsle7jgnlad2R7gR5MXB6dM= -google.golang.org/genproto v0.0.0-20230301171018-9ab4bdc49ad5/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= +google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= +google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= +google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014 h1:x9PwdEgd11LgK+orcck69WVRo7DezSO4VUMPI4xpc8A= +google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014/go.mod h1:rbHMSEDyoYX62nRVLOCc4Qt1HbsdytAYoVwgjiOhF3I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c h1:NUsgEN92SQQqzfA+YtqYNqYmB3DMMYLlIwUZAQFVFbo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1639,8 +1763,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk= +google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1657,14 +1781,15 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= @@ -1692,8 +1817,8 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= -gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= +gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= +gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1704,8 +1829,8 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= launchpad.net/gocheck v0.0.0-20140225173054-000000000087 h1:Izowp2XBH6Ya6rv+hqbceQyw/gSGoXfH/UPoTGduL54= launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM= -lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0= -lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= +lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= +lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI= lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw= @@ -1713,32 +1838,36 @@ modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0= modernc.org/ccgo/v3 v3.16.13 h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw= modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY= modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk= +modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= -modernc.org/libc v1.22.5 h1:91BNch/e5B0uPbJFgqbxXuOnxBQjlS//icfQEGmvyjE= -modernc.org/libc v1.22.5/go.mod h1:jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY= -modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ= -modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds= -modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= +modernc.org/libc v1.29.0 h1:tTFRFq69YKCF2QyGNuRUQxKBm1uZZLubf6Cjh/pVHXs= +modernc.org/libc v1.29.0/go.mod h1:DaG/4Q3LRRdqpiLyP0C2m1B8ZMGkQ+cCgOIjEtQlYhQ= +modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= +modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= +modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E= +modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E= modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sqlite v1.22.1 h1:P2+Dhp5FR1RlVRkQ3dDfCiv3Ok8XPxqpe70IjYVA9oE= -modernc.org/sqlite v1.22.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk= +modernc.org/sqlite v1.28.0 h1:Zx+LyDDmXczNnEQdvPuEfcFVA2ZPyaD7UCZDjef3BHQ= +modernc.org/sqlite v1.28.0/go.mod h1:Qxpazz0zH8Z1xCFyi5GSL3FzbtZ3fvbjmywNogldEW0= modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY= modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= modernc.org/tcl v1.15.2 h1:C4ybAYCGJw968e+Me18oW55kD/FexcHbqH2xak1ROSY= +modernc.org/tcl v1.15.2/go.mod h1:3+k/ZaEbKrC8ePv8zJWPtBSW0V7Gg9g8rkmhI1Kfs3c= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/z v1.7.3 h1:zDJf6iHjrnB+WRD88stbXokugjyc0/pB91ri1gO6LZY= +modernc.org/z v1.7.3/go.mod h1:Ipv4tsdxZRbQyLq9Q1M6gdbkxYzdlrciF2Hi/lS7nWE= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA= -pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= +pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/tests/interchaintest/helpers/cosmwasm.go b/tests/interchaintest/helpers/cosmwasm.go new file mode 100644 index 000000000..bc722914a --- /dev/null +++ b/tests/interchaintest/helpers/cosmwasm.go @@ -0,0 +1,176 @@ +package helpers + +import ( + "context" + "encoding/json" + "testing" + + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/stretchr/testify/require" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/cosmos/cosmos-sdk/crypto/keyring" +) + +func SmartQueryString(t *testing.T, ctx context.Context, chain *cosmos.CosmosChain, contractAddr, queryMsg string, res interface{}) error { + var jsonMap map[string]interface{} + if err := json.Unmarshal([]byte(queryMsg), &jsonMap); err != nil { + t.Fatal(err) + } + err := chain.QueryContract(ctx, contractAddr, jsonMap, &res) + return err +} + +func StoreContract(t *testing.T, ctx context.Context, chain *cosmos.CosmosChain, keyname string, fileLoc string) (codeId string) { + codeId, err := chain.StoreContract(ctx, keyname, fileLoc) + if err != nil { + t.Fatal(err) + } + return codeId +} + +func SetupContract(t *testing.T, ctx context.Context, chain *cosmos.CosmosChain, keyname string, fileLoc string, message string, extraFlags ...string) (codeId, contract string) { + codeId = StoreContract(t, ctx, chain, keyname, fileLoc) + + needsNoAdminFlag := true + // if extraFlags contains "--admin", switch to false + for _, flag := range extraFlags { + if flag == "--admin" { + needsNoAdminFlag = false + } + } + + contractAddr, err := chain.InstantiateContract(ctx, keyname, codeId, message, needsNoAdminFlag, extraFlags...) + if err != nil { + t.Fatal(err) + } + + return codeId, contractAddr +} + +func MigrateContract(t *testing.T, ctx context.Context, chain *cosmos.CosmosChain, keyname string, contractAddr string, fileLoc string, message string) (codeId, contract string) { + codeId, err := chain.StoreContract(ctx, keyname, fileLoc) + if err != nil { + t.Fatal(err) + } + + // Execute migrate tx + cmd := []string{ + "junod", "tx", "wasm", "migrate", contractAddr, codeId, message, + "--node", chain.GetRPCAddress(), + "--home", chain.HomeDir(), + "--chain-id", chain.Config().ChainID, + "--from", keyname, + "--gas", "500000", + "--keyring-dir", chain.HomeDir(), + "--keyring-backend", keyring.BackendTest, + "-y", + } + + stdout, _, err := chain.Exec(ctx, cmd, nil) + require.NoError(t, err) + + debugOutput(t, string(stdout)) + + if err := testutil.WaitForBlocks(ctx, 2, chain); err != nil { + t.Fatal(err) + } + + return codeId, contractAddr +} + +func ExecuteMsgWithAmount(t *testing.T, ctx context.Context, chain *cosmos.CosmosChain, user ibc.Wallet, contractAddr, amount, message string) { + // amount is #utoken + + // There has to be a way to do this in ictest? + cmd := []string{ + "junod", "tx", "wasm", "execute", contractAddr, message, + "--node", chain.GetRPCAddress(), + "--home", chain.HomeDir(), + "--chain-id", chain.Config().ChainID, + "--from", user.KeyName(), + "--gas", "500000", + "--amount", amount, + "--keyring-dir", chain.HomeDir(), + "--keyring-backend", keyring.BackendTest, + "-y", + } + stdout, _, err := chain.Exec(ctx, cmd, nil) + require.NoError(t, err) + + debugOutput(t, string(stdout)) + + if err := testutil.WaitForBlocks(ctx, 2, chain); err != nil { + t.Fatal(err) + } +} + +func ExecuteMsgWithFee(t *testing.T, ctx context.Context, chain *cosmos.CosmosChain, user ibc.Wallet, contractAddr, amount, feeCoin, message string) { + // amount is #utoken + + // There has to be a way to do this in ictest? + cmd := []string{ + "junod", "tx", "wasm", "execute", contractAddr, message, + "--node", chain.GetRPCAddress(), + "--home", chain.HomeDir(), + "--chain-id", chain.Config().ChainID, + "--from", user.KeyName(), + "--gas", "500000", + "--fees", feeCoin, + "--keyring-dir", chain.HomeDir(), + "--keyring-backend", keyring.BackendTest, + "-y", + } + + if amount != "" { + cmd = append(cmd, "--amount", amount) + } + + stdout, _, err := chain.Exec(ctx, cmd, nil) + require.NoError(t, err) + + debugOutput(t, string(stdout)) + + if err := testutil.WaitForBlocks(ctx, 2, chain); err != nil { + t.Fatal(err) + } +} + +func ExecuteMsgWithFeeReturn(t *testing.T, ctx context.Context, chain *cosmos.CosmosChain, user ibc.Wallet, contractAddr, amount, feeCoin, message string) (*sdk.TxResponse, error) { + // amount is #utoken + + // There has to be a way to do this in ictest? (there is, use node.ExecTx) + cmd := []string{ + "wasm", "execute", contractAddr, message, + "--output", "json", + "--node", chain.GetRPCAddress(), + "--home", chain.HomeDir(), + "--gas", "500000", + "--fees", feeCoin, + "--keyring-dir", chain.HomeDir(), + } + + if amount != "" { + cmd = append(cmd, "--amount", amount) + } + + node := chain.GetNode() + + txHash, err := node.ExecTx(ctx, user.KeyName(), cmd...) + if err != nil { + return nil, err + } + + // convert stdout into a TxResponse + txRes, err := chain.GetTransaction(txHash) + return txRes, err +} + +func debugOutput(t *testing.T, stdout string) { + if true { + t.Log(stdout) + } +} diff --git a/tests/interchaintest/helpers/ibchooks.go b/tests/interchaintest/helpers/ibchooks.go new file mode 100644 index 000000000..aecb38896 --- /dev/null +++ b/tests/interchaintest/helpers/ibchooks.go @@ -0,0 +1,41 @@ +package helpers + +import ( + "context" + "strings" + "testing" + + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/stretchr/testify/require" +) + +func GetIBCHooksUserAddress(t *testing.T, ctx context.Context, chain *cosmos.CosmosChain, channel, uaddr string) string { + // picad q ibchooks wasm-sender channel-0 "contractAddr" --node http://localhost:26657 + cmd := []string{ + "picad", "query", "ibchooks", "wasm-sender", channel, uaddr, + "--node", chain.GetRPCAddress(), + "--chain-id", chain.Config().ChainID, + "--output", "json", + } + + // This query does not return a type, just prints the string. + stdout, _, err := chain.Exec(ctx, cmd, nil) + require.NoError(t, err) + + address := strings.Replace(string(stdout), "\n", "", -1) + return address +} + +func GetIBCHookTotalFunds(t *testing.T, ctx context.Context, chain *cosmos.CosmosChain, contract string, uaddr string) GetTotalFundsResponse { + var res GetTotalFundsResponse + err := chain.QueryContract(ctx, contract, QueryMsg{GetTotalFunds: &GetTotalFundsQuery{Addr: uaddr}}, &res) + require.NoError(t, err) + return res +} + +func GetIBCHookCount(t *testing.T, ctx context.Context, chain *cosmos.CosmosChain, contract string, uaddr string) GetCountResponse { + var res GetCountResponse + err := chain.QueryContract(ctx, contract, QueryMsg{GetCount: &GetCountQuery{Addr: uaddr}}, &res) + require.NoError(t, err) + return res +} diff --git a/tests/interchaintest/helpers/types.go b/tests/interchaintest/helpers/types.go new file mode 100644 index 000000000..489bff5cd --- /dev/null +++ b/tests/interchaintest/helpers/types.go @@ -0,0 +1,95 @@ +package helpers + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// Go based data types for querying on the contract. +// Execute types are not needed here. We just use strings. Could add though in the future and to_string it + +// EntryPoint +type QueryMsg struct { + // Tokenfactory Core + GetConfig *struct{} `json:"get_config,omitempty"` + GetBalance *GetBalanceQuery `json:"get_balance,omitempty"` + GetAllBalances *GetAllBalancesQuery `json:"get_all_balances,omitempty"` + + // Unity Contract + GetWithdrawalReadyTime *struct{} `json:"get_withdrawal_ready_time,omitempty"` + + // IBCHooks + GetCount *GetCountQuery `json:"get_count,omitempty"` + GetTotalFunds *GetTotalFundsQuery `json:"get_total_funds,omitempty"` +} + +type GetAllBalancesQuery struct { + Address string `json:"address"` +} +type GetAllBalancesResponse struct { + // or is it wasm Coin type? + Data []sdk.Coin `json:"data"` +} + +type GetBalanceQuery struct { + // {"get_balance":{"address":"juno1...","denom":"factory/juno1.../RcqfWz"}} + Address string `json:"address"` + Denom string `json:"denom"` +} +type GetBalanceResponse struct { + // or is it wasm Coin type? + Data sdk.Coin `json:"data"` +} + +type WithdrawalTimestampResponse struct { + // {"data":{"withdrawal_ready_timestamp":"1686146048614053435"}} + Data *WithdrawalTimestampObj `json:"data"` +} +type WithdrawalTimestampObj struct { + WithdrawalReadyTimestamp string `json:"withdrawal_ready_timestamp"` +} + +type GetTotalFundsQuery struct { + // {"get_total_funds":{"addr":"juno1..."}} + Addr string `json:"addr"` +} +type GetTotalFundsResponse struct { + // {"data":{"total_funds":[{"denom":"ibc/04F5F501207C3626A2C14BFEF654D51C2E0B8F7CA578AB8ED272A66FE4E48097","amount":"1"}]}} + Data *GetTotalFundsObj `json:"data"` +} +type GetTotalFundsObj struct { + TotalFunds []WasmCoin `json:"total_funds"` +} + +type WasmCoin struct { + Denom string `json:"denom"` + Amount string `json:"amount"` +} + +type GetCountQuery struct { + // {"get_total_funds":{"addr":"juno1..."}} + Addr string `json:"addr"` +} +type GetCountResponse struct { + // {"data":{"count":0}} + Data *GetCountObj `json:"data"` +} +type GetCountObj struct { + Count int64 `json:"count"` +} + +type ClockContractResponse struct { + Data *ClockContractObj `json:"data"` +} +type ClockContractObj struct { + Val uint32 `json:"val"` +} + +type GetCwHooksDelegationResponse struct { + // {"data":{"validator_address":"%s","delegator_address":"%s","shares":"%s"}} + Data *GetDelegationObj `json:"data"` +} +type GetDelegationObj struct { + ValidatorAddress string `json:"validator_address"` + DelegatorAddress string `json:"delegator_address"` + Shares string `json:"shares"` +} diff --git a/tests/interchaintest/ibc_transfer_cosmos_test.go b/tests/interchaintest/ibc_transfer_cosmos_test.go new file mode 100644 index 000000000..153e289ff --- /dev/null +++ b/tests/interchaintest/ibc_transfer_cosmos_test.go @@ -0,0 +1,196 @@ +package interchaintest + +import ( + "context" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/relayer" + "testing" + + "cosmossdk.io/math" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + interchaintestrelayer "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" + + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" +) + +// TestComposableGaiaIBCTransfer spins up a Composable and Gaia network, initializes an IBC connection between them, +// and sends an ICS20 token transfer from Composable->Gaia and then back from Gaia->Composable. +func TestComposableGaiaIBCTransfer(t *testing.T) { + if testing.Short() { + t.Skip() + } + + t.Parallel() + + // Create chain factory with Composable and Gaia + numVals := 1 + numFullNodes := 1 + + cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ + { + Name: "Centauri", + ChainConfig: CentauriConfig, + NumValidators: &numVals, + NumFullNodes: &numFullNodes, + }, + { + Name: "gaia", + Version: "v9.1.0", + NumValidators: &numVals, + NumFullNodes: &numFullNodes, + }, + }) + + const ( + path = "ibc-path" + ) + + // Get chains from the chain factory + chains, err := cf.Chains(t.Name()) + require.NoError(t, err) + + client, network := interchaintest.DockerSetup(t) + + composable, gaia := chains[0].(*cosmos.CosmosChain), chains[1].(*cosmos.CosmosChain) + + relayerType, relayerName := ibc.CosmosRly, "relay" + + // Get a relayer instance + rf := interchaintest.NewBuiltinRelayerFactory( + relayerType, + zaptest.NewLogger(t), + relayer.DockerImage(&DefaultRelayer), + interchaintestrelayer.StartupFlags("--processor", "events", "--block-history", "100"), + ) + + r := rf.Build(t, client, network) + + ic := interchaintest.NewInterchain(). + AddChain(composable). + AddChain(gaia). + AddRelayer(r, relayerName). + AddLink(interchaintest.InterchainLink{ + Chain1: composable, + Chain2: gaia, + Relayer: r, + Path: path, + }) + + ctx := context.Background() + + rep := testreporter.NewNopReporter() + eRep := rep.RelayerExecReporter(t) + + require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ + TestName: t.Name(), + Client: client, + NetworkID: network, + BlockDatabaseFile: interchaintest.DefaultBlockDatabaseFilepath(), + SkipPathCreation: false, + })) + t.Cleanup(func() { + _ = ic.Close() + }) + + // Create some user accounts on both chains + users := interchaintest.GetAndFundTestUsers(t, ctx, t.Name(), genesisWalletAmount, composable, gaia) + + // Wait a few blocks for relayer to start and for user accounts to be created + err = testutil.WaitForBlocks(ctx, 5, composable, gaia) + require.NoError(t, err) + + // Get our Bech32 encoded user addresses + composableUser, gaiaUser := users[0], users[1] + + composableUserAddr := composableUser.FormattedAddress() + gaiaUserAddr := gaiaUser.FormattedAddress() + + // Get original account balances + composableOrigBal, err := composable.GetBalance(ctx, composableUserAddr, composable.Config().Denom) + require.NoError(t, err) + require.Equal(t, genesisWalletAmount, composableOrigBal) + + gaiaOrigBal, err := gaia.GetBalance(ctx, gaiaUserAddr, gaia.Config().Denom) + require.NoError(t, err) + require.Equal(t, genesisWalletAmount, gaiaOrigBal) + + // Compose an IBC transfer and send from Composable -> Gaia + var transferAmount = math.NewInt(1_000) + transfer := ibc.WalletAmount{ + Address: gaiaUserAddr, + Denom: composable.Config().Denom, + Amount: transferAmount, + } + + channel, err := ibc.GetTransferChannel(ctx, r, eRep, composable.Config().ChainID, gaia.Config().ChainID) + require.NoError(t, err) + + composableHeight, err := composable.Height(ctx) + require.NoError(t, err) + + transferTx, err := composable.SendIBCTransfer(ctx, channel.ChannelID, composableUserAddr, transfer, ibc.TransferOptions{}) + require.NoError(t, err) + + err = r.StartRelayer(ctx, eRep, path) + require.NoError(t, err) + + t.Cleanup( + func() { + err := r.StopRelayer(ctx, eRep) + if err != nil { + t.Logf("an error occurred while stopping the relayer: %s", err) + } + }, + ) + + // Poll for the ack to know the transfer was successful + _, err = testutil.PollForAck(ctx, composable, composableHeight, composableHeight+50, transferTx.Packet) + require.NoError(t, err) + + err = testutil.WaitForBlocks(ctx, 10, composable) + require.NoError(t, err) + + // Get the IBC denom for ppica on Gaia + composableTokenDenom := transfertypes.GetPrefixedDenom(channel.Counterparty.PortID, channel.Counterparty.ChannelID, composable.Config().Denom) + composableIBCDenom := transfertypes.ParseDenomTrace(composableTokenDenom).IBCDenom() + + // Assert that the funds are no longer present in user acc on Composable and are in the user acc on Gaia + composableUpdateBal, err := composable.GetBalance(ctx, composableUserAddr, composable.Config().Denom) + require.NoError(t, err) + require.Equal(t, composableOrigBal.Sub(transferAmount), composableUpdateBal) + + gaiaUpdateBal, err := gaia.GetBalance(ctx, gaiaUserAddr, composableIBCDenom) + require.NoError(t, err) + require.Equal(t, transferAmount, gaiaUpdateBal) + + // Compose an IBC transfer and send from Gaia -> Composable + transfer = ibc.WalletAmount{ + Address: composableUserAddr, + Denom: composableIBCDenom, + Amount: transferAmount, + } + + gaiaHeight, err := gaia.Height(ctx) + require.NoError(t, err) + + transferTx, err = gaia.SendIBCTransfer(ctx, channel.Counterparty.ChannelID, gaiaUserAddr, transfer, ibc.TransferOptions{}) + require.NoError(t, err) + + // Poll for the ack to know the transfer was successful + _, err = testutil.PollForAck(ctx, gaia, gaiaHeight, gaiaHeight+25, transferTx.Packet) + require.NoError(t, err) + + // Assert that the funds are now back on Composable and not on Gaia + composableUpdateBal, err = composable.GetBalance(ctx, composableUserAddr, composable.Config().Denom) + require.NoError(t, err) + require.Equal(t, composableOrigBal, composableUpdateBal) + + gaiaUpdateBal, err = gaia.GetBalance(ctx, gaiaUserAddr, composableIBCDenom) + require.NoError(t, err) + require.Equal(t, true, gaiaUpdateBal.IsZero()) +} diff --git a/tests/interchaintest/ibc_transfer_test.go b/tests/interchaintest/ibc_transfer_test.go index 5dd889058..2b3c10782 100644 --- a/tests/interchaintest/ibc_transfer_test.go +++ b/tests/interchaintest/ibc_transfer_test.go @@ -2,20 +2,23 @@ package interchaintest import ( "context" + "cosmossdk.io/math" "crypto/sha256" "encoding/hex" "fmt" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + "github.com/strangelove-ventures/interchaintest/v8" + "strconv" "testing" "time" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/chain/polkadot" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/relayer" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/chain/polkadot" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) @@ -43,8 +46,8 @@ func TestCentauriPicassoIBCTransfer(t *testing.T) { ctx := context.Background() - nv := 5 // Number of validators - nf := 3 // Number of full nodes + nv := 1 // Number of validators + nf := 1 // Number of full nodes consensusOverrides := make(testutil.Toml) blockTime := 5 // seconds, parachain is 12 second blocks, don't make relayer work harder than needed @@ -70,14 +73,14 @@ func TestCentauriPicassoIBCTransfer(t *testing.T) { ChainID: "rococo-local", Images: []ibc.DockerImage{ { - Repository: "seunlanlege/centauri-polkadot", - Version: "v0.9.27", + Repository: "ghcr.io/misko9/polkadot-node", + Version: "v39", UidGid: "1000:1000", }, { - Repository: "seunlanlege/centauri-parachain", - Version: "v0.9.27", - // UidGid: "1025:1025", + Repository: "ghcr.io/misko9/parachain-node", + Version: "20231122v39", + UidGid: "1000:1000", }, }, Bin: "polkadot", @@ -104,6 +107,7 @@ func TestCentauriPicassoIBCTransfer(t *testing.T) { GasAdjustment: 1.3, TrustingPeriod: "504h", CoinType: "118", + EncodingConfig: composableEncoding(), // EncodingConfig: WasmClientEncoding(), NoHostMount: true, ConfigFileOverrides: configFileOverrides, @@ -115,7 +119,7 @@ func TestCentauriPicassoIBCTransfer(t *testing.T) { chains, err := cf.Chains(t.Name()) require.NoError(t, err) - composable := chains[0].(*polkadot.PolkadotChain) + polkadotChain := chains[0].(*polkadot.PolkadotChain) centaurid := chains[1].(*cosmos.CosmosChain) // Get a relayer instance @@ -124,7 +128,7 @@ func TestCentauriPicassoIBCTransfer(t *testing.T) { zaptest.NewLogger(t), // These two fields are used to pass in a custom Docker image built locally // relayer.ImagePull(false), - relayer.CustomDockerImage("composablefi/hyperspace", "latest", "1000:1000"), + relayer.CustomDockerImage("ghcr.io/misko9/hyperspace", "20231122v39", "1000:1000"), ).Build(t, client, network) // Build the network; spin up the chains and configure the relayer @@ -132,11 +136,11 @@ func TestCentauriPicassoIBCTransfer(t *testing.T) { const relayerName = "hyperspace" ic := interchaintest.NewInterchain(). - AddChain(composable). + AddChain(polkadotChain). AddChain(centaurid). AddRelayer(r, relayerName). AddLink(interchaintest.InterchainLink{ - Chain1: composable, + Chain1: polkadotChain, Chain2: centaurid, Relayer: r, Path: pathName, @@ -161,34 +165,36 @@ func TestCentauriPicassoIBCTransfer(t *testing.T) { // Set client contract hash in cosmos chain config err = r.SetClientContractHash(ctx, eRep, centaurid.Config(), codeHash) require.NoError(t, err) + fmt.Println("hoank") - // Ensure parachain has started (starts 1 session/epoch after relay chain) - err = testutil.WaitForBlocks(ctx, 1, composable) - require.NoError(t, err, "polkadot chain failed to make blocks") + //// Ensure parachain has started (starts 1 session/epoch after relay chain) + //err = testutil.WaitForBlocks(ctx, 1, polkadotChain) + //require.NoError(t, err, "polkadot chain failed to make blocks") + //fmt.Println("waiting") // Fund users on both cosmos and parachain, mints Asset 1 for Alice - fundAmount := int64(12_333_000_000_000) - polkadotUser, cosmosUser := fundUsers(t, ctx, fundAmount, composable, centaurid) + fundAmount := math.NewInt(12_333_000_000_000) + polkadotUser, cosmosUser := fundUsers(t, ctx, fundAmount, polkadotChain, centaurid) - err = r.GeneratePath(ctx, eRep, centaurid.Config().ChainID, composable.Config().ChainID, pathName) + err = r.GeneratePath(ctx, eRep, centaurid.Config().ChainID, polkadotChain.Config().ChainID, pathName) require.NoError(t, err) // Create new clients err = r.CreateClients(ctx, eRep, pathName, ibc.DefaultClientOpts()) require.NoError(t, err) - err = testutil.WaitForBlocks(ctx, 1, centaurid, composable) // these 1 block waits may be needed, not sure + err = testutil.WaitForBlocks(ctx, 1, centaurid, polkadotChain) // these 1 block waits may be needed, not sure require.NoError(t, err) // Create a new connection err = r.CreateConnections(ctx, eRep, pathName) require.NoError(t, err) - err = testutil.WaitForBlocks(ctx, 1, centaurid, composable) + err = testutil.WaitForBlocks(ctx, 1, centaurid, polkadotChain) require.NoError(t, err) // Create a new channel & get channels from each chain err = r.CreateChannel(ctx, eRep, pathName, ibc.DefaultChannelOpts()) require.NoError(t, err) - err = testutil.WaitForBlocks(ctx, 1, centaurid, composable) + err = testutil.WaitForBlocks(ctx, 1, centaurid, polkadotChain) require.NoError(t, err) // Get channels - Query channels was removed @@ -197,7 +203,7 @@ func TestCentauriPicassoIBCTransfer(t *testing.T) { require.Equal(t, len(cosmosChannelOutput), 1) require.Equal(t, cosmosChannelOutput[0].ChannelID, "channel-0") require.Equal(t, cosmosChannelOutput[0].PortID, "transfer") - polkadotChannelOutput, err := r.GetChannels(ctx, eRep, composable.Config().ChainID) + polkadotChannelOutput, err := r.GetChannels(ctx, eRep, polkadotChain.Config().ChainID) require.NoError(t, err) require.Equal(t, len(polkadotChannelOutput), 1) require.Equal(t, polkadotChannelOutput[0].ChannelID, "channel-0") @@ -214,7 +220,7 @@ func TestCentauriPicassoIBCTransfer(t *testing.T) { }) // Send 1.77 stake from cosmosUser to parachainUser - amountToSend := int64(1_770_000) + amountToSend := math.NewInt(1_770_000) transfer := ibc.WalletAmount{ Address: polkadotUser.FormattedAddress(), Denom: centaurid.Config().Denom, @@ -223,7 +229,7 @@ func TestCentauriPicassoIBCTransfer(t *testing.T) { tx, err := centaurid.SendIBCTransfer(ctx, "channel-0", cosmosUser.KeyName(), transfer, ibc.TransferOptions{}) require.NoError(t, err) require.NoError(t, tx.Validate()) // test source wallet has decreased funds - err = testutil.WaitForBlocks(ctx, 5, centaurid, composable) + err = testutil.WaitForBlocks(ctx, 5, centaurid, polkadotChain) require.NoError(t, err) /*// Trace IBC Denom of stake on parachain @@ -231,33 +237,33 @@ func TestCentauriPicassoIBCTransfer(t *testing.T) { dstIbcDenom := srcDenomTrace.IBCDenom() fmt.Println("Dst Ibc denom: ", dstIbcDenom) // Test destination wallet has increased funds, this is not working, want to verify IBC balance on parachain - polkadotUserIbcCoins, err := composable.GetIbcBalance(ctx, string(polkadotUser.Address())) + polkadotUserIbcCoins, err := polkadotChain.GetIbcBalance(ctx, string(polkadotUser.Address())) fmt.Println("UserIbcCoins: ", polkadotUserIbcCoins.String()) - aliceIbcCoins, err := composable.GetIbcBalance(ctx, "5yNZjX24n2eg7W6EVamaTXNQbWCwchhThEaSWB7V3GRjtHeL") + aliceIbcCoins, err := polkadotChain.GetIbcBalance(ctx, "5yNZjX24n2eg7W6EVamaTXNQbWCwchhThEaSWB7V3GRjtHeL") fmt.Println("AliceIbcCoins: ", aliceIbcCoins.String())*/ // Send 1.16 stake from parachainUser to cosmosUser - amountToReflect := int64(1_160_000) + amountToReflect := math.NewInt(1_160_000) reflectTransfer := ibc.WalletAmount{ Address: cosmosUser.FormattedAddress(), Denom: "2", // stake Amount: amountToReflect, } - _, err = composable.SendIBCTransfer(ctx, "channel-0", polkadotUser.KeyName(), reflectTransfer, ibc.TransferOptions{}) + _, err = polkadotChain.SendIBCTransfer(ctx, "channel-0", polkadotUser.KeyName(), reflectTransfer, ibc.TransferOptions{}) require.NoError(t, err) // Send 1.88 "UNIT" from Alice to cosmosUser - amountUnits := int64(1_880_000_000_000) + amountUnits := math.NewInt(1_880_000_000_000) unitTransfer := ibc.WalletAmount{ Address: cosmosUser.FormattedAddress(), Denom: "1", // UNIT Amount: amountUnits, } - _, err = composable.SendIBCTransfer(ctx, "channel-0", "alice", unitTransfer, ibc.TransferOptions{}) + _, err = polkadotChain.SendIBCTransfer(ctx, "channel-0", "alice", unitTransfer, ibc.TransferOptions{}) require.NoError(t, err) // Wait for MsgRecvPacket on cosmos chain - finalStakeBal := fundAmount - amountToSend + amountToReflect + finalStakeBal := fundAmount.Sub(amountToSend).Add(amountToReflect) err = cosmos.PollForBalance(ctx, centaurid, 20, ibc.WalletAmount{ Address: cosmosUser.FormattedAddress(), Denom: centaurid.Config().Denom, @@ -274,23 +280,23 @@ func TestCentauriPicassoIBCTransfer(t *testing.T) { cosmosUserUnitBal, err := centaurid.GetBalance(ctx, cosmosUser.FormattedAddress(), unitDenomTrace.IBCDenom()) require.NoError(t, err) require.Equal(t, amountUnits, cosmosUserUnitBal) - /*polkadotUserIbcCoins, err = composable.GetIbcBalance(ctx, string(polkadotUser.Address())) + /*polkadotUserIbcCoins, err = polkadotChain.GetIbcBalance(ctx, string(polkadotUser.Address())) fmt.Println("UserIbcCoins: ", polkadotUserIbcCoins.String()) - aliceIbcCoins, err = composable.GetIbcBalance(ctx, "5yNZjX24n2eg7W6EVamaTXNQbWCwchhThEaSWB7V3GRjtHeL") + aliceIbcCoins, err = polkadotChain.GetIbcBalance(ctx, "5yNZjX24n2eg7W6EVamaTXNQbWCwchhThEaSWB7V3GRjtHeL") fmt.Println("AliceIbcCoins: ", aliceIbcCoins.String())*/ fmt.Println("********************************") fmt.Println("********* Test passed **********") fmt.Println("********************************") - // err = testutil.WaitForBlocks(ctx, 50, centaurid, composable) + // err = testutil.WaitForBlocks(ctx, 50, centaurid, polkadotChain) // require.NoError(t, err) } func pushWasmContractViaGov(t *testing.T, ctx context.Context, centaurid *cosmos.CosmosChain) string { // Set up cosmos user for pushing new wasm code msg via governance - fundAmountForGov := int64(10_000_000_000) - contractUsers := interchaintest.GetAndFundTestUsers(t, ctx, "default", int64(fundAmountForGov), centaurid) + fundAmountForGov := math.NewInt(10_000_000_000) + contractUsers := interchaintest.GetAndFundTestUsers(t, ctx, "default", fundAmountForGov, centaurid) contractUser := contractUsers[0] contractUserBalInitial, err := centaurid.GetBalance(ctx, contractUser.FormattedAddress(), centaurid.Config().Denom) @@ -313,7 +319,10 @@ func pushWasmContractViaGov(t *testing.T, ctx context.Context, centaurid *cosmos err = centaurid.VoteOnProposalAllValidators(ctx, proposalTx.ProposalID, cosmos.ProposalVoteYes) require.NoError(t, err, "failed to submit votes") - _, err = cosmos.PollForProposalStatus(ctx, centaurid, height, height+heightDelta, proposalTx.ProposalID, cosmos.ProposalStatusPassed) + propId, err := strconv.ParseUint(proposalTx.ProposalID, 10, 64) + require.NoError(t, err, "failed to convert proposal ID to uint64") + + _, err = cosmos.PollForProposalStatus(ctx, centaurid, height, height+heightDelta, propId, govv1beta1.StatusPassed) require.NoError(t, err, "proposal status did not change to passed in expected number of blocks") err = testutil.WaitForBlocks(ctx, 1, centaurid) @@ -321,21 +330,21 @@ func pushWasmContractViaGov(t *testing.T, ctx context.Context, centaurid *cosmos var getCodeQueryMsgRsp GetCodeQueryMsgResponse err = centaurid.QueryClientContractCode(ctx, codeHash, &getCodeQueryMsgRsp) - codeHashByte32 := sha256.Sum256(getCodeQueryMsgRsp.Code) + codeHashByte32 := sha256.Sum256(getCodeQueryMsgRsp.Data) codeHash2 := hex.EncodeToString(codeHashByte32[:]) t.Logf("Contract codeHash from code: %s", codeHash2) require.NoError(t, err) - require.NotEmpty(t, getCodeQueryMsgRsp.Code) + require.NotEmpty(t, getCodeQueryMsgRsp.Data) require.Equal(t, codeHash, codeHash2) return codeHash } -func fundUsers(t *testing.T, ctx context.Context, fundAmount int64, composable, centaurid ibc.Chain) (ibc.Wallet, ibc.Wallet) { +func fundUsers(t *testing.T, ctx context.Context, fundAmount math.Int, composable, centaurid ibc.Chain) (ibc.Wallet, ibc.Wallet) { users := interchaintest.GetAndFundTestUsers(t, ctx, "user", fundAmount, composable, centaurid) polkadotUser, cosmosUser := users[0], users[1] - err := testutil.WaitForBlocks(ctx, 2, composable, centaurid) // Only waiting 1 block is flaky for parachain - require.NoError(t, err, "cosmos or polkadot chain failed to make blocks") + //err := testutil.WaitForBlocks(ctx, 2, composable, centaurid) // Only waiting 1 block is flaky for parachain + //require.NoError(t, err, "cosmos or polkadot chain failed to make blocks") // Check balances are correct polkadotUserAmount, err := composable.GetBalance(ctx, polkadotUser.FormattedAddress(), composable.Config().Denom) diff --git a/tests/interchaintest/module_ibchooks_test.go b/tests/interchaintest/module_ibchooks_test.go new file mode 100644 index 000000000..8ec176691 --- /dev/null +++ b/tests/interchaintest/module_ibchooks_test.go @@ -0,0 +1,183 @@ +package interchaintest + +import ( + "context" + "fmt" + "github.com/notional-labs/composable-testnet/tests/interchaintest/helpers" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/relayer" + "strings" + "testing" + + "cosmossdk.io/math" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + interchaintestrelayer "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" +) + +// TestComposableIBCHooks ensures the ibc-hooks middleware from osmosis works. +func TestComposableIBCHooks(t *testing.T) { + if testing.Short() { + t.Skip() + } + + t.Parallel() + + // Create chain factory with Centauri and Centauri2 + numVals := 1 + numFullNodes := 0 + + cfg2 := CentauriConfig.Clone() + cfg2.Name = "composable-counterparty" + cfg2.ChainID = "counterparty-2" + + cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ + { + Name: "Centauri", + ChainConfig: CentauriConfig, + NumValidators: &numVals, + NumFullNodes: &numFullNodes, + }, + { + Name: "Centauri", + ChainConfig: cfg2, + NumValidators: &numVals, + NumFullNodes: &numFullNodes, + }, + }) + + const ( + path = "ibc-path" + ) + + // Get chains from the chain factory + chains, err := cf.Chains(t.Name()) + require.NoError(t, err) + + client, network := interchaintest.DockerSetup(t) + + composable, composable2 := chains[0].(*cosmos.CosmosChain), chains[1].(*cosmos.CosmosChain) + + relayerType, relayerName := ibc.CosmosRly, "relay" + + // Get a relayer instance + rf := interchaintest.NewBuiltinRelayerFactory( + relayerType, + zaptest.NewLogger(t), + relayer.DockerImage(&DefaultRelayer), + interchaintestrelayer.StartupFlags("--processor", "events", "--block-history", "100"), + ) + + r := rf.Build(t, client, network) + + ic := interchaintest.NewInterchain(). + AddChain(composable). + AddChain(composable2). + AddRelayer(r, relayerName). + AddLink(interchaintest.InterchainLink{ + Chain1: composable, + Chain2: composable2, + Relayer: r, + Path: path, + }) + + ctx := context.Background() + + rep := testreporter.NewNopReporter() + eRep := rep.RelayerExecReporter(t) + + require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ + TestName: t.Name(), + Client: client, + NetworkID: network, + BlockDatabaseFile: interchaintest.DefaultBlockDatabaseFilepath(), + SkipPathCreation: false, + })) + t.Cleanup(func() { + _ = ic.Close() + }) + + // Create some user accounts on both chains + users := interchaintest.GetAndFundTestUsers(t, ctx, t.Name(), genesisWalletAmount, composable, composable2) + + // Wait a few blocks for relayer to start and for user accounts to be created + err = testutil.WaitForBlocks(ctx, 5, composable, composable2) + require.NoError(t, err) + + // Get our Bech32 encoded user addresses + composableUser, composable2User := users[0], users[1] + + composableUserAddr := composableUser.FormattedAddress() + // composable2UserAddr := composable2User.FormattedAddress() + + channel, err := ibc.GetTransferChannel(ctx, r, eRep, composable.Config().ChainID, composable2.Config().ChainID) + require.NoError(t, err) + + err = r.StartRelayer(ctx, eRep, path) + require.NoError(t, err) + + t.Cleanup( + func() { + err := r.StopRelayer(ctx, eRep) + if err != nil { + t.Logf("an error occurred while stopping the relayer: %s", err) + } + }, + ) + + _, contractAddr := helpers.SetupContract(t, ctx, composable2, composable2User.KeyName(), "contracts/ibchooks_counter.wasm", `{"count":0}`) + + // do an ibc transfer through the memo to the other chain. + transfer := ibc.WalletAmount{ + Address: contractAddr, + Denom: composable.Config().Denom, + Amount: math.NewInt(1), + } + + memo := ibc.TransferOptions{ + Memo: fmt.Sprintf(`{"wasm":{"contract":"%s","msg":%s}}`, contractAddr, `{"increment":{}}`), + } + + // Initial transfer. Account is created by the wasm execute is not so we must do this twice to properly set up + transferTx, err := composable.SendIBCTransfer(ctx, channel.ChannelID, composableUser.KeyName(), transfer, memo) + require.NoError(t, err) + composableHeight, err := composable.Height(ctx) + require.NoError(t, err) + + _, err = testutil.PollForAck(ctx, composable, composableHeight-5, composableHeight+25, transferTx.Packet) + require.NoError(t, err) + + // Second time, this will make the counter == 1 since the account is now created. + transferTx, err = composable.SendIBCTransfer(ctx, channel.ChannelID, composableUser.KeyName(), transfer, memo) + require.NoError(t, err) + composableHeight, err = composable.Height(ctx) + require.NoError(t, err) + + _, err = testutil.PollForAck(ctx, composable, composableHeight-5, composableHeight+25, transferTx.Packet) + require.NoError(t, err) + + // Get the address on the other chain's side + addr := helpers.GetIBCHooksUserAddress(t, ctx, composable, channel.ChannelID, composableUserAddr) + require.NotEmpty(t, addr) + + // Get funds on the receiving chain + funds := helpers.GetIBCHookTotalFunds(t, ctx, composable2, contractAddr, addr) + require.Equal(t, int(1), len(funds.Data.TotalFunds)) + + var ibcDenom string + for _, coin := range funds.Data.TotalFunds { + if strings.HasPrefix(coin.Denom, "ibc/") { + ibcDenom = coin.Denom + break + } + } + require.NotEmpty(t, ibcDenom) + + // ensure the count also increased to 1 as expected. + count := helpers.GetIBCHookCount(t, ctx, composable2, contractAddr, addr) + require.Equal(t, int64(1), count.Data.Count) +} diff --git a/tests/interchaintest/module_pfm_test.go b/tests/interchaintest/module_pfm_test.go new file mode 100644 index 000000000..4a191e62e --- /dev/null +++ b/tests/interchaintest/module_pfm_test.go @@ -0,0 +1,264 @@ +package interchaintest + +import ( + "context" + "cosmossdk.io/math" + "encoding/json" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/relayer" + interchaintestrelayer "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" + "testing" + + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// TestPacketForwardMiddlewareRouter ensures the PFM module is set up properly and works as expected. +func TestPacketForwardMiddlewareRouter(t *testing.T) { + if testing.Short() { + t.Skip() + } + + var ( + ctx = context.Background() + client, network = interchaintest.DockerSetup(t) + rep = testreporter.NewNopReporter() + eRep = rep.RelayerExecReporter(t) + chainID_A, chainID_B, chainID_C, chainID_D = "chain-a", "chain-b", "chain-c", "chain-d" + chainA, chainB, chainC, chainD *cosmos.CosmosChain + ) + + // base config which all networks will use as defaults. + baseCfg := CentauriConfig + + // Set specific chain ids for each so they are their own unique networks + baseCfg.ChainID = chainID_A + configA := baseCfg + + baseCfg.ChainID = chainID_B + configB := baseCfg + + baseCfg.ChainID = chainID_C + configC := baseCfg + + baseCfg.ChainID = chainID_D + configD := baseCfg + + // Create chain factory with multiple Composable individual networks. + numVals := 1 + numFullNodes := 0 + + cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ + { + Name: "Centauri", + ChainConfig: configA, + NumValidators: &numVals, + NumFullNodes: &numFullNodes, + }, + { + Name: "Centauri", + ChainConfig: configB, + NumValidators: &numVals, + NumFullNodes: &numFullNodes, + }, + { + Name: "Centauri", + ChainConfig: configC, + NumValidators: &numVals, + NumFullNodes: &numFullNodes, + }, + { + Name: "Centauri", + ChainConfig: configD, + NumValidators: &numVals, + NumFullNodes: &numFullNodes, + }, + }) + + // Get chains from the chain factory + chains, err := cf.Chains(t.Name()) + require.NoError(t, err) + + chainA, chainB, chainC, chainD = chains[0].(*cosmos.CosmosChain), chains[1].(*cosmos.CosmosChain), chains[2].(*cosmos.CosmosChain), chains[3].(*cosmos.CosmosChain) + + r := interchaintest.NewBuiltinRelayerFactory( + ibc.CosmosRly, + zaptest.NewLogger(t), + relayer.DockerImage(&DefaultRelayer), + interchaintestrelayer.StartupFlags("--processor", "events", "--block-history", "100"), + ).Build(t, client, network) + + const pathAB = "ab" + const pathBC = "bc" + const pathCD = "cd" + + ic := interchaintest.NewInterchain(). + AddChain(chainA). + AddChain(chainB). + AddChain(chainC). + AddChain(chainD). + AddRelayer(r, "relayer"). + AddLink(interchaintest.InterchainLink{ + Chain1: chainA, + Chain2: chainB, + Relayer: r, + Path: pathAB, + }). + AddLink(interchaintest.InterchainLink{ + Chain1: chainB, + Chain2: chainC, + Relayer: r, + Path: pathBC, + }). + AddLink(interchaintest.InterchainLink{ + Chain1: chainC, + Chain2: chainD, + Relayer: r, + Path: pathCD, + }) + + require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ + TestName: t.Name(), + Client: client, + NetworkID: network, + BlockDatabaseFile: interchaintest.DefaultBlockDatabaseFilepath(), + + SkipPathCreation: false, + })) + t.Cleanup(func() { + _ = ic.Close() + }) + + userFunds := math.NewInt(10_000_000_000) + users := interchaintest.GetAndFundTestUsers(t, ctx, t.Name(), userFunds, chainA, chainB, chainC, chainD) + + abChan, err := ibc.GetTransferChannel(ctx, r, eRep, chainID_A, chainID_B) + require.NoError(t, err) + + baChan := abChan.Counterparty + + cbChan, err := ibc.GetTransferChannel(ctx, r, eRep, chainID_C, chainID_B) + require.NoError(t, err) + + bcChan := cbChan.Counterparty + + dcChan, err := ibc.GetTransferChannel(ctx, r, eRep, chainID_D, chainID_C) + require.NoError(t, err) + + cdChan := dcChan.Counterparty + + // Start the relayer on all paths + err = r.StartRelayer(ctx, eRep, pathAB, pathBC, pathCD) + require.NoError(t, err) + + t.Cleanup( + func() { + err := r.StopRelayer(ctx, eRep) + if err != nil { + t.Logf("an error occurred while stopping the relayer: %s", err) + } + }, + ) + + // Get original account balances + userA, userB, userC, userD := users[0], users[1], users[2], users[3] + + var transferAmount math.Int = math.NewInt(100_000) + + // Compose the prefixed denoms and ibc denom for asserting balances + firstHopDenom := transfertypes.GetPrefixedDenom(baChan.PortID, baChan.ChannelID, chainA.Config().Denom) + secondHopDenom := transfertypes.GetPrefixedDenom(cbChan.PortID, cbChan.ChannelID, firstHopDenom) + thirdHopDenom := transfertypes.GetPrefixedDenom(dcChan.PortID, dcChan.ChannelID, secondHopDenom) + + firstHopDenomTrace := transfertypes.ParseDenomTrace(firstHopDenom) + secondHopDenomTrace := transfertypes.ParseDenomTrace(secondHopDenom) + thirdHopDenomTrace := transfertypes.ParseDenomTrace(thirdHopDenom) + + firstHopIBCDenom := firstHopDenomTrace.IBCDenom() + secondHopIBCDenom := secondHopDenomTrace.IBCDenom() + thirdHopIBCDenom := thirdHopDenomTrace.IBCDenom() + + firstHopEscrowAccount := sdk.MustBech32ifyAddressBytes(chainA.Config().Bech32Prefix, transfertypes.GetEscrowAddress(abChan.PortID, abChan.ChannelID)) + secondHopEscrowAccount := sdk.MustBech32ifyAddressBytes(chainB.Config().Bech32Prefix, transfertypes.GetEscrowAddress(bcChan.PortID, bcChan.ChannelID)) + thirdHopEscrowAccount := sdk.MustBech32ifyAddressBytes(chainC.Config().Bech32Prefix, transfertypes.GetEscrowAddress(cdChan.PortID, abChan.ChannelID)) + + t.Run("multi-hop a->b->c->d", func(t *testing.T) { + // Send packet from Chain A->Chain B->Chain C->Chain D + + transfer := ibc.WalletAmount{ + Address: userB.FormattedAddress(), + Denom: chainA.Config().Denom, + Amount: transferAmount, + } + + secondHopMetadata := &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userD.FormattedAddress(), + Channel: cdChan.ChannelID, + Port: cdChan.PortID, + }, + } + nextBz, err := json.Marshal(secondHopMetadata) + require.NoError(t, err) + next := string(nextBz) + + firstHopMetadata := &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userC.FormattedAddress(), + Channel: bcChan.ChannelID, + Port: bcChan.PortID, + Next: &next, + }, + } + + memo, err := json.Marshal(firstHopMetadata) + require.NoError(t, err) + + chainAHeight, err := chainA.Height(ctx) + require.NoError(t, err) + + transferTx, err := chainA.SendIBCTransfer(ctx, abChan.ChannelID, userA.KeyName(), transfer, ibc.TransferOptions{Memo: string(memo)}) + require.NoError(t, err) + _, err = testutil.PollForAck(ctx, chainA, chainAHeight, chainAHeight+30, transferTx.Packet) + require.NoError(t, err) + err = testutil.WaitForBlocks(ctx, 1, chainA) + require.NoError(t, err) + + chainABalance, err := chainA.GetBalance(ctx, userA.FormattedAddress(), chainA.Config().Denom) + require.NoError(t, err) + + chainBBalance, err := chainB.GetBalance(ctx, userB.FormattedAddress(), firstHopIBCDenom) + require.NoError(t, err) + + chainCBalance, err := chainC.GetBalance(ctx, userC.FormattedAddress(), secondHopIBCDenom) + require.NoError(t, err) + + chainDBalance, err := chainD.GetBalance(ctx, userD.FormattedAddress(), thirdHopIBCDenom) + require.NoError(t, err) + + require.Equal(t, userFunds.Sub(transferAmount), chainABalance) + require.Equal(t, int64(0), chainBBalance.Int64()) + require.Equal(t, int64(0), chainCBalance.Int64()) + require.Equal(t, transferAmount.Int64(), chainDBalance.Int64()) + + firstHopEscrowBalance, err := chainA.GetBalance(ctx, firstHopEscrowAccount, chainA.Config().Denom) + require.NoError(t, err) + + secondHopEscrowBalance, err := chainB.GetBalance(ctx, secondHopEscrowAccount, firstHopIBCDenom) + require.NoError(t, err) + + thirdHopEscrowBalance, err := chainC.GetBalance(ctx, thirdHopEscrowAccount, secondHopIBCDenom) + require.NoError(t, err) + + require.Equal(t, transferAmount.Int64(), firstHopEscrowBalance.Int64()) + require.Equal(t, transferAmount.Int64(), secondHopEscrowBalance.Int64()) + require.Equal(t, transferAmount.Int64(), thirdHopEscrowBalance.Int64()) + }) +} diff --git a/tests/interchaintest/packet_forward_test.go b/tests/interchaintest/packet_forward_test.go new file mode 100644 index 000000000..aa9bb7366 --- /dev/null +++ b/tests/interchaintest/packet_forward_test.go @@ -0,0 +1,686 @@ +package interchaintest + +import ( + "context" + "encoding/json" + "github.com/strangelove-ventures/interchaintest/v8" + "testing" + "time" + + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" +) + +type PacketMetadata struct { + Forward *ForwardMetadata `json:"forward"` +} + +type ForwardMetadata struct { + Receiver string `json:"receiver"` + Port string `json:"port"` + Channel string `json:"channel"` + Timeout time.Duration `json:"timeout"` + Retries *uint8 `json:"retries,omitempty"` + Next *string `json:"next,omitempty"` + RefundSequence *uint64 `json:"refund_sequence,omitempty"` +} + +func TestPacketForwardMiddleware(t *testing.T) { + if testing.Short() { + t.Skip("skipping in short mode") + } + + var ( + ctx = context.Background() + client, network = interchaintest.DockerSetup(t) + rep = testreporter.NewNopReporter() + eRep = rep.RelayerExecReporter(t) + chainIdA, chainIdB, chainIdC, chainIdD = "chain-1", "chain-2", "chain-3", "chain-4" + waitBlocks = 3 + ) + + vals := 1 + fullNodes := 0 + + baseCfg := CentauriConfig + + baseCfg.ChainID = chainIdA + configA := baseCfg + + baseCfg.ChainID = chainIdB + configB := baseCfg + + baseCfg.ChainID = chainIdC + configC := baseCfg + + baseCfg.ChainID = chainIdD + configD := baseCfg + + cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ + {Name: "pfm", ChainConfig: configA, NumFullNodes: &fullNodes, NumValidators: &vals}, + {Name: "pfm", ChainConfig: configB, NumFullNodes: &fullNodes, NumValidators: &vals}, + {Name: "pfm", ChainConfig: configC, NumFullNodes: &fullNodes, NumValidators: &vals}, + {Name: "pfm", ChainConfig: configD, NumFullNodes: &fullNodes, NumValidators: &vals}, + }) + + chains, err := cf.Chains(t.Name()) + require.NoError(t, err) + + chainA, chainB, chainC, chainD := chains[0].(*cosmos.CosmosChain), chains[1].(*cosmos.CosmosChain), chains[2].(*cosmos.CosmosChain), chains[3].(*cosmos.CosmosChain) + + r := interchaintest.NewBuiltinRelayerFactory( + ibc.CosmosRly, + zaptest.NewLogger(t), + relayer.DockerImage(&DefaultRelayer), + relayer.StartupFlags("--processor", "events", "--block-history", "100"), + ).Build(t, client, network) + + const pathAB = "ab" + const pathBC = "bc" + const pathCD = "cd" + + ic := interchaintest.NewInterchain(). + AddChain(chainA). + AddChain(chainB). + AddChain(chainC). + AddChain(chainD). + AddRelayer(r, "relayer"). + AddLink(interchaintest.InterchainLink{ + Chain1: chainA, + Chain2: chainB, + Relayer: r, + Path: pathAB, + }). + AddLink(interchaintest.InterchainLink{ + Chain1: chainB, + Chain2: chainC, + Relayer: r, + Path: pathBC, + }). + AddLink(interchaintest.InterchainLink{ + Chain1: chainC, + Chain2: chainD, + Relayer: r, + Path: pathCD, + }) + + require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ + TestName: t.Name(), + Client: client, + NetworkID: network, + BlockDatabaseFile: interchaintest.DefaultBlockDatabaseFilepath(), + + SkipPathCreation: false, + })) + t.Cleanup(func() { + _ = ic.Close() + }) + + initBal := math.NewInt(10_000_000_000) + users := interchaintest.GetAndFundTestUsers(t, ctx, t.Name(), initBal, chainA, chainB, chainC, chainD) + + abChan, err := ibc.GetTransferChannel(ctx, r, eRep, chainIdA, chainIdB) + require.NoError(t, err) + + baChan := abChan.Counterparty + + cbChan, err := ibc.GetTransferChannel(ctx, r, eRep, chainIdC, chainIdB) + require.NoError(t, err) + + bcChan := cbChan.Counterparty + + dcChan, err := ibc.GetTransferChannel(ctx, r, eRep, chainIdD, chainIdC) + require.NoError(t, err) + + cdChan := dcChan.Counterparty + + // Start the relayer on both paths + err = r.StartRelayer(ctx, eRep, pathAB, pathBC, pathCD) + require.NoError(t, err) + + t.Cleanup( + func() { + err := r.StopRelayer(ctx, eRep) + if err != nil { + t.Logf("an error occured while stopping the relayer: %s", err) + } + }, + ) + + // Get original account balances + userA, userB, userC, userD := users[0], users[1], users[2], users[3] + + // Compose the prefixed denoms and ibc denom for asserting balances + firstHopDenom := transfertypes.GetPrefixedDenom(baChan.PortID, baChan.ChannelID, chainA.Config().Denom) + secondHopDenom := transfertypes.GetPrefixedDenom(cbChan.PortID, cbChan.ChannelID, firstHopDenom) + thirdHopDenom := transfertypes.GetPrefixedDenom(dcChan.PortID, dcChan.ChannelID, secondHopDenom) + + firstHopDenomTrace := transfertypes.ParseDenomTrace(firstHopDenom) + secondHopDenomTrace := transfertypes.ParseDenomTrace(secondHopDenom) + thirdHopDenomTrace := transfertypes.ParseDenomTrace(thirdHopDenom) + + firstHopIBCDenom := firstHopDenomTrace.IBCDenom() + secondHopIBCDenom := secondHopDenomTrace.IBCDenom() + thirdHopIBCDenom := thirdHopDenomTrace.IBCDenom() + + firstHopEscrowAccount := sdk.MustBech32ifyAddressBytes(chainA.Config().Bech32Prefix, transfertypes.GetEscrowAddress(abChan.PortID, abChan.ChannelID)) + secondHopEscrowAccount := sdk.MustBech32ifyAddressBytes(chainB.Config().Bech32Prefix, transfertypes.GetEscrowAddress(bcChan.PortID, bcChan.ChannelID)) + thirdHopEscrowAccount := sdk.MustBech32ifyAddressBytes(chainC.Config().Bech32Prefix, transfertypes.GetEscrowAddress(cdChan.PortID, abChan.ChannelID)) + + zeroBal := math.ZeroInt() + transferAmount := math.NewInt(100_000) + + t.Run("multi-hop a->b->c->d", func(t *testing.T) { + // Send packet from Chain A->Chain B->Chain C->Chain D + transfer := ibc.WalletAmount{ + Address: userB.FormattedAddress(), + Denom: chainA.Config().Denom, + Amount: transferAmount, + } + + secondHopMetadata := &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userD.FormattedAddress(), + Channel: cdChan.ChannelID, + Port: cdChan.PortID, + }, + } + nextBz, err := json.Marshal(secondHopMetadata) + require.NoError(t, err) + next := string(nextBz) + + firstHopMetadata := &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userC.FormattedAddress(), + Channel: bcChan.ChannelID, + Port: bcChan.PortID, + Next: &next, + }, + } + + memo, err := json.Marshal(firstHopMetadata) + require.NoError(t, err) + + chainAHeight, err := chainA.Height(ctx) + require.NoError(t, err) + + transferTx, err := chainA.SendIBCTransfer(ctx, abChan.ChannelID, userA.KeyName(), transfer, ibc.TransferOptions{Memo: string(memo)}) + require.NoError(t, err) + _, err = testutil.PollForAck(ctx, chainA, chainAHeight, chainAHeight+30, transferTx.Packet) + require.NoError(t, err) + err = testutil.WaitForBlocks(ctx, waitBlocks, chainA) + require.NoError(t, err) + + chainABalance, err := chainA.GetBalance(ctx, userA.FormattedAddress(), chainA.Config().Denom) + require.NoError(t, err) + + chainBBalance, err := chainB.GetBalance(ctx, userB.FormattedAddress(), firstHopIBCDenom) + require.NoError(t, err) + + chainCBalance, err := chainC.GetBalance(ctx, userC.FormattedAddress(), secondHopIBCDenom) + require.NoError(t, err) + + chainDBalance, err := chainD.GetBalance(ctx, userD.FormattedAddress(), thirdHopIBCDenom) + require.NoError(t, err) + + require.True(t, chainABalance.Equal(initBal.Sub(transferAmount))) + require.True(t, chainBBalance.Equal(zeroBal)) + require.True(t, chainCBalance.Equal(zeroBal)) + require.True(t, chainDBalance.Equal(transferAmount)) + + firstHopEscrowBalance, err := chainA.GetBalance(ctx, firstHopEscrowAccount, chainA.Config().Denom) + require.NoError(t, err) + + secondHopEscrowBalance, err := chainB.GetBalance(ctx, secondHopEscrowAccount, firstHopIBCDenom) + require.NoError(t, err) + + thirdHopEscrowBalance, err := chainC.GetBalance(ctx, thirdHopEscrowAccount, secondHopIBCDenom) + require.NoError(t, err) + + require.Equal(t, transferAmount, firstHopEscrowBalance) + require.Equal(t, transferAmount, secondHopEscrowBalance) + require.Equal(t, transferAmount, thirdHopEscrowBalance) + }) + + t.Run("multi-hop denom unwind d->c->b->a", func(t *testing.T) { + // Send packet back from Chain D->Chain C->Chain B->Chain A + transfer := ibc.WalletAmount{ + Address: userC.FormattedAddress(), + Denom: thirdHopIBCDenom, + Amount: transferAmount, + } + + secondHopMetadata := &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userA.FormattedAddress(), + Channel: baChan.ChannelID, + Port: baChan.PortID, + }, + } + + nextBz, err := json.Marshal(secondHopMetadata) + require.NoError(t, err) + + next := string(nextBz) + + firstHopMetadata := &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userB.FormattedAddress(), + Channel: cbChan.ChannelID, + Port: cbChan.PortID, + Next: &next, + }, + } + + memo, err := json.Marshal(firstHopMetadata) + require.NoError(t, err) + + chainDHeight, err := chainD.Height(ctx) + require.NoError(t, err) + + transferTx, err := chainD.SendIBCTransfer(ctx, dcChan.ChannelID, userD.KeyName(), transfer, ibc.TransferOptions{Memo: string(memo)}) + require.NoError(t, err) + _, err = testutil.PollForAck(ctx, chainD, chainDHeight, chainDHeight+30, transferTx.Packet) + require.NoError(t, err) + err = testutil.WaitForBlocks(ctx, waitBlocks, chainA) + require.NoError(t, err) + + // assert balances for user controlled wallets + chainDBalance, err := chainD.GetBalance(ctx, userD.FormattedAddress(), thirdHopIBCDenom) + require.NoError(t, err) + + chainCBalance, err := chainC.GetBalance(ctx, userC.FormattedAddress(), secondHopIBCDenom) + require.NoError(t, err) + + chainBBalance, err := chainB.GetBalance(ctx, userB.FormattedAddress(), firstHopIBCDenom) + require.NoError(t, err) + + chainABalance, err := chainA.GetBalance(ctx, userA.FormattedAddress(), chainA.Config().Denom) + require.NoError(t, err) + + require.True(t, chainDBalance.Equal(zeroBal)) + require.True(t, chainCBalance.Equal(zeroBal)) + require.True(t, chainBBalance.Equal(zeroBal)) + require.True(t, chainABalance.Equal(initBal)) + + // assert balances for IBC escrow accounts + firstHopEscrowBalance, err := chainA.GetBalance(ctx, firstHopEscrowAccount, chainA.Config().Denom) + require.NoError(t, err) + + secondHopEscrowBalance, err := chainB.GetBalance(ctx, secondHopEscrowAccount, firstHopIBCDenom) + require.NoError(t, err) + + thirdHopEscrowBalance, err := chainC.GetBalance(ctx, thirdHopEscrowAccount, secondHopIBCDenom) + require.NoError(t, err) + + require.True(t, firstHopEscrowBalance.Equal(zeroBal)) + require.True(t, secondHopEscrowBalance.Equal(zeroBal)) + require.True(t, thirdHopEscrowBalance.Equal(zeroBal)) + }) + + t.Run("forward ack error refund", func(t *testing.T) { + // Send a malformed packet with invalid receiver address from Chain A->Chain B->Chain C + // This should succeed in the first hop and fail to make the second hop; funds should then be refunded to Chain A. + transfer := ibc.WalletAmount{ + Address: userB.FormattedAddress(), + Denom: chainA.Config().Denom, + Amount: transferAmount, + } + + metadata := &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: "xyz1t8eh66t2w5k67kwurmn5gqhtq6d2ja0vp7jmmq", // malformed receiver address on Chain C + Channel: bcChan.ChannelID, + Port: bcChan.PortID, + }, + } + + memo, err := json.Marshal(metadata) + require.NoError(t, err) + + chainAHeight, err := chainA.Height(ctx) + require.NoError(t, err) + + transferTx, err := chainA.SendIBCTransfer(ctx, abChan.ChannelID, userA.KeyName(), transfer, ibc.TransferOptions{Memo: string(memo)}) + require.NoError(t, err) + + _, err = testutil.PollForAck(ctx, chainA, chainAHeight, chainAHeight+25, transferTx.Packet) + require.NoError(t, err) + err = testutil.WaitForBlocks(ctx, waitBlocks, chainA) + require.NoError(t, err) + + // assert balances for user controlled wallets + chainABalance, err := chainA.GetBalance(ctx, userA.FormattedAddress(), chainA.Config().Denom) + require.NoError(t, err) + + chainBBalance, err := chainB.GetBalance(ctx, userB.FormattedAddress(), firstHopIBCDenom) + require.NoError(t, err) + + chainCBalance, err := chainC.GetBalance(ctx, userC.FormattedAddress(), secondHopIBCDenom) + require.NoError(t, err) + + require.True(t, chainABalance.Equal(initBal)) + require.True(t, chainBBalance.Equal(zeroBal)) + require.True(t, chainCBalance.Equal(zeroBal)) + + // assert balances for IBC escrow accounts + firstHopEscrowBalance, err := chainA.GetBalance(ctx, firstHopEscrowAccount, chainA.Config().Denom) + require.NoError(t, err) + + secondHopEscrowBalance, err := chainB.GetBalance(ctx, secondHopEscrowAccount, firstHopIBCDenom) + require.NoError(t, err) + + require.True(t, firstHopEscrowBalance.Equal(zeroBal)) + require.True(t, secondHopEscrowBalance.Equal(zeroBal)) + }) + t.Run("forward timeout refund", func(t *testing.T) { + // Send packet from Chain A->Chain B->Chain C with the timeout so low for B->C transfer that it can not make it from B to C, which should result in a refund from B to A after two retries. + transfer := ibc.WalletAmount{ + Address: userB.FormattedAddress(), + Denom: chainA.Config().Denom, + Amount: transferAmount, + } + + retries := uint8(2) + metadata := &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userC.FormattedAddress(), + Channel: bcChan.ChannelID, + Port: bcChan.PortID, + Retries: &retries, + Timeout: 1 * time.Second, + }, + } + + memo, err := json.Marshal(metadata) + require.NoError(t, err) + + chainAHeight, err := chainA.Height(ctx) + require.NoError(t, err) + + transferTx, err := chainA.SendIBCTransfer(ctx, abChan.ChannelID, userA.KeyName(), transfer, ibc.TransferOptions{Memo: string(memo)}) + require.NoError(t, err) + _, err = testutil.PollForAck(ctx, chainA, chainAHeight, chainAHeight+25, transferTx.Packet) + require.NoError(t, err) + err = testutil.WaitForBlocks(ctx, waitBlocks, chainA) + require.NoError(t, err) + + // assert balances for user controlled wallets + chainABalance, err := chainA.GetBalance(ctx, userA.FormattedAddress(), chainA.Config().Denom) + require.NoError(t, err) + + chainBBalance, err := chainB.GetBalance(ctx, userB.FormattedAddress(), firstHopIBCDenom) + require.NoError(t, err) + + chainCBalance, err := chainC.GetBalance(ctx, userC.FormattedAddress(), secondHopIBCDenom) + require.NoError(t, err) + + require.True(t, chainABalance.Equal(initBal)) + require.True(t, chainBBalance.Equal(zeroBal)) + require.True(t, chainCBalance.Equal(zeroBal)) + + firstHopEscrowBalance, err := chainA.GetBalance(ctx, firstHopEscrowAccount, chainA.Config().Denom) + require.NoError(t, err) + + secondHopEscrowBalance, err := chainB.GetBalance(ctx, secondHopEscrowAccount, firstHopIBCDenom) + require.NoError(t, err) + + require.True(t, firstHopEscrowBalance.Equal(zeroBal)) + require.True(t, secondHopEscrowBalance.Equal(zeroBal)) + }) + + t.Run("multi-hop ack error refund", func(t *testing.T) { + // Send a malformed packet with invalid receiver address from Chain A->Chain B->Chain C->Chain D + // This should succeed in the first hop and second hop, then fail to make the third hop. + // Funds should be refunded to Chain B and then to Chain A via acknowledgements with errors. + transfer := ibc.WalletAmount{ + Address: userB.FormattedAddress(), + Denom: chainA.Config().Denom, + Amount: transferAmount, + } + + secondHopMetadata := &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: "xyz1t8eh66t2w5k67kwurmn5gqhtq6d2ja0vp7jmmq", // malformed receiver address on chain D + Channel: cdChan.ChannelID, + Port: cdChan.PortID, + }, + } + + nextBz, err := json.Marshal(secondHopMetadata) + require.NoError(t, err) + + next := string(nextBz) + + firstHopMetadata := &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userC.FormattedAddress(), + Channel: bcChan.ChannelID, + Port: bcChan.PortID, + Next: &next, + }, + } + + memo, err := json.Marshal(firstHopMetadata) + require.NoError(t, err) + + chainAHeight, err := chainA.Height(ctx) + require.NoError(t, err) + + transferTx, err := chainA.SendIBCTransfer(ctx, abChan.ChannelID, userA.KeyName(), transfer, ibc.TransferOptions{Memo: string(memo)}) + require.NoError(t, err) + _, err = testutil.PollForAck(ctx, chainA, chainAHeight, chainAHeight+30, transferTx.Packet) + require.NoError(t, err) + err = testutil.WaitForBlocks(ctx, waitBlocks, chainA) + require.NoError(t, err) + + // assert balances for user controlled wallets + chainDBalance, err := chainD.GetBalance(ctx, userD.FormattedAddress(), thirdHopIBCDenom) + require.NoError(t, err) + + chainCBalance, err := chainC.GetBalance(ctx, userC.FormattedAddress(), secondHopIBCDenom) + require.NoError(t, err) + + chainBBalance, err := chainB.GetBalance(ctx, userB.FormattedAddress(), firstHopIBCDenom) + require.NoError(t, err) + + chainABalance, err := chainA.GetBalance(ctx, userA.FormattedAddress(), chainA.Config().Denom) + require.NoError(t, err) + + require.True(t, chainABalance.Equal(initBal)) + require.True(t, chainBBalance.Equal(zeroBal)) + require.True(t, chainCBalance.Equal(zeroBal)) + require.True(t, chainDBalance.Equal(zeroBal)) + + // assert balances for IBC escrow accounts + firstHopEscrowBalance, err := chainA.GetBalance(ctx, firstHopEscrowAccount, chainA.Config().Denom) + require.NoError(t, err) + + secondHopEscrowBalance, err := chainB.GetBalance(ctx, secondHopEscrowAccount, firstHopIBCDenom) + require.NoError(t, err) + + thirdHopEscrowBalance, err := chainC.GetBalance(ctx, thirdHopEscrowAccount, secondHopIBCDenom) + require.NoError(t, err) + + require.True(t, firstHopEscrowBalance.Equal(zeroBal)) + require.True(t, secondHopEscrowBalance.Equal(zeroBal)) + require.True(t, thirdHopEscrowBalance.Equal(zeroBal)) + }) + + t.Run("multi-hop through native chain ack error refund", func(t *testing.T) { + // send normal IBC transfer from B->A to get funds in IBC denom, then do multihop A->B(native)->C->D + // this lets us test the burn from escrow account on chain C and the escrow to escrow transfer on chain B. + + // Compose the prefixed denoms and ibc denom for asserting balances + baDenom := transfertypes.GetPrefixedDenom(abChan.PortID, abChan.ChannelID, chainB.Config().Denom) + bcDenom := transfertypes.GetPrefixedDenom(cbChan.PortID, cbChan.ChannelID, chainB.Config().Denom) + cdDenom := transfertypes.GetPrefixedDenom(dcChan.PortID, dcChan.ChannelID, bcDenom) + + baDenomTrace := transfertypes.ParseDenomTrace(baDenom) + bcDenomTrace := transfertypes.ParseDenomTrace(bcDenom) + cdDenomTrace := transfertypes.ParseDenomTrace(cdDenom) + + baIBCDenom := baDenomTrace.IBCDenom() + bcIBCDenom := bcDenomTrace.IBCDenom() + cdIBCDenom := cdDenomTrace.IBCDenom() + + transfer := ibc.WalletAmount{ + Address: userA.FormattedAddress(), + Denom: chainB.Config().Denom, + Amount: transferAmount, + } + + chainBHeight, err := chainB.Height(ctx) + require.NoError(t, err) + + transferTx, err := chainB.SendIBCTransfer(ctx, baChan.ChannelID, userB.KeyName(), transfer, ibc.TransferOptions{}) + require.NoError(t, err) + _, err = testutil.PollForAck(ctx, chainB, chainBHeight, chainBHeight+10, transferTx.Packet) + require.NoError(t, err) + err = testutil.WaitForBlocks(ctx, waitBlocks, chainB) + require.NoError(t, err) + + // assert balance for user controlled wallet + chainABalance, err := chainA.GetBalance(ctx, userA.FormattedAddress(), baIBCDenom) + require.NoError(t, err) + + addr := sdk.MustBech32ifyAddressBytes(chainB.Config().Bech32Prefix, transfertypes.GetEscrowAddress(baChan.PortID, baChan.ChannelID)) + baEscrowBalance, err := chainB.GetBalance(ctx, addr, chainB.Config().Denom) + require.NoError(t, err) + + require.True(t, chainABalance.Equal(transferAmount)) + require.True(t, baEscrowBalance.Equal(transferAmount)) + + // Send a malformed packet with invalid receiver address from Chain A->Chain B->Chain C->Chain D + // This should succeed in the first hop and second hop, then fail to make the third hop. + // Funds should be refunded to Chain B and then to Chain A via acknowledgements with errors. + transfer = ibc.WalletAmount{ + Address: userB.FormattedAddress(), + Denom: baIBCDenom, + Amount: transferAmount, + } + + secondHopMetadata := &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: "xyz1t8eh66t2w5k67kwurmn5gqhtq6d2ja0vp7jmmq", // malformed receiver address on chain D + Channel: cdChan.ChannelID, + Port: cdChan.PortID, + }, + } + + nextBz, err := json.Marshal(secondHopMetadata) + require.NoError(t, err) + + next := string(nextBz) + + firstHopMetadata := &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userC.FormattedAddress(), + Channel: bcChan.ChannelID, + Port: bcChan.PortID, + Next: &next, + }, + } + + memo, err := json.Marshal(firstHopMetadata) + require.NoError(t, err) + + chainAHeight, err := chainA.Height(ctx) + require.NoError(t, err) + + transferTx, err = chainA.SendIBCTransfer(ctx, abChan.ChannelID, userA.KeyName(), transfer, ibc.TransferOptions{Memo: string(memo)}) + require.NoError(t, err) + _, err = testutil.PollForAck(ctx, chainA, chainAHeight, chainAHeight+30, transferTx.Packet) + require.NoError(t, err) + err = testutil.WaitForBlocks(ctx, waitBlocks, chainA) + require.NoError(t, err) + + // assert balances for user controlled wallets + chainDBalance, err := chainD.GetBalance(ctx, userD.FormattedAddress(), cdIBCDenom) + require.NoError(t, err) + + chainCBalance, err := chainC.GetBalance(ctx, userC.FormattedAddress(), bcIBCDenom) + require.NoError(t, err) + + chainBBalance, err := chainB.GetBalance(ctx, userB.FormattedAddress(), chainB.Config().Denom) + require.NoError(t, err) + + chainABalance, err = chainA.GetBalance(ctx, userA.FormattedAddress(), baIBCDenom) + require.NoError(t, err) + + require.True(t, chainABalance.Equal(transferAmount)) + require.True(t, chainBBalance.Equal(initBal.Sub(transferAmount))) + require.True(t, chainCBalance.Equal(zeroBal)) + require.True(t, chainDBalance.Equal(zeroBal)) + + // assert balances for IBC escrow accounts + addr = sdk.MustBech32ifyAddressBytes(chainC.Config().Bech32Prefix, transfertypes.GetEscrowAddress(cdChan.PortID, cdChan.ChannelID)) + cdEscrowBalance, err := chainC.GetBalance(ctx, addr, bcIBCDenom) + require.NoError(t, err) + + addr = sdk.MustBech32ifyAddressBytes(chainB.Config().Bech32Prefix, transfertypes.GetEscrowAddress(bcChan.PortID, bcChan.ChannelID)) + bcEscrowBalance, err := chainB.GetBalance(ctx, addr, chainB.Config().Denom) + require.NoError(t, err) + + addr = sdk.MustBech32ifyAddressBytes(chainB.Config().Bech32Prefix, transfertypes.GetEscrowAddress(baChan.PortID, baChan.ChannelID)) + baEscrowBalance, err = chainB.GetBalance(ctx, addr, chainB.Config().Denom) + require.NoError(t, err) + + require.True(t, baEscrowBalance.Equal(transferAmount)) + require.True(t, bcEscrowBalance.Equal(zeroBal)) + require.True(t, cdEscrowBalance.Equal(zeroBal)) + }) + + t.Run("forward a->b->a", func(t *testing.T) { + // Send packet from Chain A->Chain B->Chain A + userABalance, err := chainA.GetBalance(ctx, userA.FormattedAddress(), chainA.Config().Denom) + require.NoError(t, err, "failed to get user a balance") + + userBBalance, err := chainB.GetBalance(ctx, userB.FormattedAddress(), firstHopDenom) + require.NoError(t, err, "failed to get user a balance") + + transfer := ibc.WalletAmount{ + Address: userB.FormattedAddress(), + Denom: chainA.Config().Denom, + Amount: transferAmount, + } + + firstHopMetadata := &PacketMetadata{ + Forward: &ForwardMetadata{ + Receiver: userA.FormattedAddress(), + Channel: baChan.ChannelID, + Port: baChan.PortID, + }, + } + + memo, err := json.Marshal(firstHopMetadata) + require.NoError(t, err) + + chainAHeight, err := chainA.Height(ctx) + require.NoError(t, err) + + transferTx, err := chainA.SendIBCTransfer(ctx, abChan.ChannelID, userA.KeyName(), transfer, ibc.TransferOptions{Memo: string(memo)}) + require.NoError(t, err) + _, err = testutil.PollForAck(ctx, chainA, chainAHeight, chainAHeight+30, transferTx.Packet) + require.NoError(t, err) + err = testutil.WaitForBlocks(ctx, waitBlocks, chainA) + require.NoError(t, err) + + chainABalance, err := chainA.GetBalance(ctx, userA.FormattedAddress(), chainA.Config().Denom) + require.NoError(t, err) + + chainBBalance, err := chainB.GetBalance(ctx, userB.FormattedAddress(), firstHopIBCDenom) + require.NoError(t, err) + + require.True(t, chainABalance.Equal(userABalance)) + require.True(t, chainBBalance.Equal(userBBalance)) + }) +} diff --git a/tests/interchaintest/polkadot_chain_test.go b/tests/interchaintest/polkadot_chain_test.go index 7dd018819..d18fffe1a 100644 --- a/tests/interchaintest/polkadot_chain_test.go +++ b/tests/interchaintest/polkadot_chain_test.go @@ -2,14 +2,15 @@ package interchaintest import ( "context" + "cosmossdk.io/math" "fmt" "testing" - interchaintest "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/polkadot" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + interchaintest "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/polkadot" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) @@ -39,14 +40,14 @@ func TestPolkadotCentauriChainStart(t *testing.T) { ChainID: "rococo-local", Images: []ibc.DockerImage{ { - Repository: "parity/polkadot", - Version: "v0.9.39", + Repository: "ghcr.io/misko9/polkadot-node", + Version: "v39", UidGid: "1000:1000", }, { - Repository: "composablefi/parachain-node", - Version: "13f3db34-1688755040", - // UidGid: "1025:1025", + Repository: "ghcr.io/misko9/parachain-node", + Version: "20231122v39", + UidGid: "1000:1000", }, }, Bin: "polkadot", @@ -83,9 +84,9 @@ func TestPolkadotCentauriChainStart(t *testing.T) { err = testutil.WaitForBlocks(ctx, 2, chain) require.NoError(t, err, "polkadot chain failed to make blocks") - PARACHAIN_DEFAULT_AMOUNT := 1_152_921_504_606_847_000 - RELAYCHAIN_DEFAULT_AMOUNT := 1_100_000_000_000_000_000 - FAUCET_AMOUNT := 100_000_000_000_000_000 // set in interchain.go/global + PARACHAIN_DEFAULT_AMOUNT := math.NewInt(1_152_921_504_606_847_000) + RELAYCHAIN_DEFAULT_AMOUNT := math.NewInt(1_100_000_000_000_000_000) + FAUCET_AMOUNT := math.NewInt(100_000_000_000_000_000) // set in interchain.go/global // RELAYER_AMOUNT := 1_000_000_000_000 // set in interchain.go/global // Check the faucet amounts @@ -94,11 +95,11 @@ func TestPolkadotCentauriChainStart(t *testing.T) { polkadotFaucetAmount, err := polkadotChain.GetBalance(ctx, string(polkadotFaucetAddress), polkadotChain.Config().Denom) require.NoError(t, err) fmt.Println("Polkadot faucet amount: ", polkadotFaucetAmount) - require.Equal(t, int64(FAUCET_AMOUNT), polkadotFaucetAmount, "Polkadot faucet amount not expected") + require.Equal(t, FAUCET_AMOUNT, polkadotFaucetAmount, "Polkadot faucet amount not expected") parachainFaucetAmount, err := polkadotChain.GetBalance(ctx, string(polkadotFaucetAddress), "") require.NoError(t, err) fmt.Println("Parachain faucet amount: ", parachainFaucetAmount) - require.Equal(t, int64(FAUCET_AMOUNT), parachainFaucetAmount, "Parachain faucet amount not expected") + require.Equal(t, FAUCET_AMOUNT, parachainFaucetAmount, "Parachain faucet amount not expected") // Check alice polkadotAliceAddress, err := polkadotChain.GetAddress(ctx, "alice") @@ -106,11 +107,11 @@ func TestPolkadotCentauriChainStart(t *testing.T) { polkadotAliceAmount, err := polkadotChain.GetBalance(ctx, string(polkadotAliceAddress), polkadotChain.Config().Denom) require.NoError(t, err) fmt.Println("Polkadot alice amount: ", polkadotAliceAmount) - require.Equal(t, int64(RELAYCHAIN_DEFAULT_AMOUNT), polkadotAliceAmount, "Relaychain alice amount not expected") + require.Equal(t, RELAYCHAIN_DEFAULT_AMOUNT, polkadotAliceAmount, "Relaychain alice amount not expected") parachainAliceAmount, err := polkadotChain.GetBalance(ctx, string(polkadotAliceAddress), "") require.NoError(t, err) fmt.Println("Parachain alice amount: ", parachainAliceAmount) - require.Equal(t, int64(PARACHAIN_DEFAULT_AMOUNT), parachainAliceAmount, "Parachain alice amount not expected") + require.Equal(t, PARACHAIN_DEFAULT_AMOUNT, parachainAliceAmount, "Parachain alice amount not expected") // Check alice stash polkadotAliceStashAddress, err := polkadotChain.GetAddress(ctx, "alicestash") @@ -118,11 +119,11 @@ func TestPolkadotCentauriChainStart(t *testing.T) { polkadotAliceStashAmount, err := polkadotChain.GetBalance(ctx, string(polkadotAliceStashAddress), polkadotChain.Config().Denom) require.NoError(t, err) fmt.Println("Polkadot alice stash amount: ", polkadotAliceStashAmount) - require.Equal(t, int64(RELAYCHAIN_DEFAULT_AMOUNT), polkadotAliceStashAmount, "Relaychain alice stash amount not expected") + require.Equal(t, RELAYCHAIN_DEFAULT_AMOUNT, polkadotAliceStashAmount, "Relaychain alice stash amount not expected") parachainAliceStashAmount, err := polkadotChain.GetBalance(ctx, string(polkadotAliceStashAddress), "") require.NoError(t, err) fmt.Println("Parachain alice stash amount: ", parachainAliceStashAmount) - require.Equal(t, int64(PARACHAIN_DEFAULT_AMOUNT), parachainAliceStashAmount, "Parachain alice stash amount not expected") + require.Equal(t, PARACHAIN_DEFAULT_AMOUNT, parachainAliceStashAmount, "Parachain alice stash amount not expected") // Check bob polkadotBobAddress, err := polkadotChain.GetAddress(ctx, "bob") @@ -130,11 +131,11 @@ func TestPolkadotCentauriChainStart(t *testing.T) { polkadotBobAmount, err := polkadotChain.GetBalance(ctx, string(polkadotBobAddress), polkadotChain.Config().Denom) require.NoError(t, err) fmt.Println("Polkadot bob amount: ", polkadotBobAmount) - require.Equal(t, int64(RELAYCHAIN_DEFAULT_AMOUNT), polkadotBobAmount, "Relaychain bob amount not expected") + require.Equal(t, RELAYCHAIN_DEFAULT_AMOUNT, polkadotBobAmount, "Relaychain bob amount not expected") parachainBobAmount, err := polkadotChain.GetBalance(ctx, string(polkadotBobAddress), "") require.NoError(t, err) fmt.Println("Parachain bob amount: ", parachainBobAmount) - require.Equal(t, int64(PARACHAIN_DEFAULT_AMOUNT), parachainBobAmount, "Parachain bob amount not expected") + require.Equal(t, PARACHAIN_DEFAULT_AMOUNT, parachainBobAmount, "Parachain bob amount not expected") // Check bob stash polkadotBobStashAddress, err := polkadotChain.GetAddress(ctx, "bobstash") @@ -142,14 +143,14 @@ func TestPolkadotCentauriChainStart(t *testing.T) { polkadotBobStashAmount, err := polkadotChain.GetBalance(ctx, string(polkadotBobStashAddress), polkadotChain.Config().Denom) require.NoError(t, err) fmt.Println("Polkadot bob stash amount: ", polkadotBobStashAmount) - require.Equal(t, int64(RELAYCHAIN_DEFAULT_AMOUNT), polkadotBobStashAmount, "Relaychain bob stash amount not expected") + require.Equal(t, RELAYCHAIN_DEFAULT_AMOUNT, polkadotBobStashAmount, "Relaychain bob stash amount not expected") parachainBobStashAmount, err := polkadotChain.GetBalance(ctx, string(polkadotBobStashAddress), "") require.NoError(t, err) fmt.Println("Parachain bob stash amount: ", parachainBobStashAmount) - require.Equal(t, int64(PARACHAIN_DEFAULT_AMOUNT), parachainBobStashAmount, "Parachain bob stash amount not expected") + require.Equal(t, PARACHAIN_DEFAULT_AMOUNT, parachainBobStashAmount, "Parachain bob stash amount not expected") // Fund user1 on both relay and parachain, must wait a block to fund user2 due to same faucet address - fundAmount := int64(12_333_000_000_000) + fundAmount := math.NewInt(12_333_000_000_000) users1 := interchaintest.GetAndFundTestUsers(t, ctx, "user1", fundAmount, polkadotChain) user1 := users1[0] err = testutil.WaitForBlocks(ctx, 2, chain) @@ -180,7 +181,7 @@ func TestPolkadotCentauriChainStart(t *testing.T) { require.Equal(t, fundAmount, parachainUser2Amount, "Initial parachain user2 amount not expected") // Transfer 1T units from user1 to user2 on both chains - txAmount := int64(1_000_000_000_000) + txAmount := math.NewInt(1_000_000_000_000) polkadotTxUser1ToUser2 := ibc.WalletAmount{ Address: user2.FormattedAddress(), Amount: txAmount, @@ -203,17 +204,17 @@ func TestPolkadotCentauriChainStart(t *testing.T) { polkadotUser1Amount, err = polkadotChain.GetBalance(ctx, user1.FormattedAddress(), polkadotChain.Config().Denom) require.NoError(t, err) fmt.Println("Polkadot user1 amount: ", polkadotUser1Amount) - require.LessOrEqual(t, polkadotUser1Amount, fundAmount-txAmount, "Final polkadot user1 amount not expected") + require.LessOrEqual(t, polkadotUser1Amount.Int64(), fundAmount.Sub(txAmount).Int64(), "Final polkadot user1 amount not expected") polkadotUser2Amount, err = polkadotChain.GetBalance(ctx, user2.FormattedAddress(), polkadotChain.Config().Denom) require.NoError(t, err) fmt.Println("Polkadot user2 amount: ", polkadotUser2Amount) - require.Equal(t, fundAmount+txAmount, polkadotUser2Amount, "Final polkadot user2 amount not expected") + require.Equal(t, fundAmount.Add(txAmount), polkadotUser2Amount, "Final polkadot user2 amount not expected") parachainUser1Amount, err = polkadotChain.GetBalance(ctx, user1.FormattedAddress(), "") require.NoError(t, err) fmt.Println("Parachain user1 amount: ", parachainUser1Amount) - require.LessOrEqual(t, parachainUser1Amount, fundAmount-txAmount, "Final parachain user1 amount not expected") + require.LessOrEqual(t, parachainUser1Amount.Int64(), fundAmount.Sub(txAmount).Int64(), "Final parachain user1 amount not expected") parachainUser2Amount, err = polkadotChain.GetBalance(ctx, user2.FormattedAddress(), "") require.NoError(t, err) fmt.Println("Parachain user2 amount: ", parachainUser2Amount) - require.Equal(t, fundAmount+txAmount, parachainUser2Amount, "Final parachain user2 amount not expected") + require.Equal(t, fundAmount.Add(txAmount), parachainUser2Amount, "Final parachain user2 amount not expected") } diff --git a/tests/interchaintest/push_wasm_client_code_test.go b/tests/interchaintest/push_wasm_client_code_test.go index 14cbf4040..537058d9a 100644 --- a/tests/interchaintest/push_wasm_client_code_test.go +++ b/tests/interchaintest/push_wasm_client_code_test.go @@ -2,26 +2,29 @@ package interchaintest import ( "context" + "cosmossdk.io/math" "crypto/sha256" "encoding/hex" "encoding/json" "fmt" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + "github.com/strangelove-ventures/interchaintest/v8" + "strconv" "testing" "github.com/icza/dyno" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" // simappparams "github.com/cosmos/cosmos-sdk/simapp/params" ) const ( - heightDelta = uint64(20) - votingPeriod = "30s" + heightDelta = 30 + votingPeriod = "20s" maxDepositPeriod = "10s" ) @@ -62,6 +65,8 @@ func TestPushWasmClientCode(t *testing.T) { configFileOverrides["config/app.toml"] = appTomlOverrides configFileOverrides["config/config.toml"] = configTomlOverrides + numValidator := 1 + cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ { ChainConfig: ibc.ChainConfig{ @@ -80,6 +85,7 @@ func TestPushWasmClientCode(t *testing.T) { ConfigFileOverrides: configFileOverrides, ModifyGenesis: modifyGenesisShortProposals(votingPeriod, maxDepositPeriod), }, + NumValidators: &numValidator, }, }) @@ -107,22 +113,25 @@ func TestPushWasmClientCode(t *testing.T) { }) // Create and Fund User Wallets - fundAmount := int64(10_000_000_000) - users := interchaintest.GetAndFundTestUsers(t, ctx, "default", int64(fundAmount), centaurid) + fundAmount := math.NewInt(10_000_000_000) + users := interchaintest.GetAndFundTestUsers(t, ctx, "default", fundAmount, centaurid) centaurid1User := users[0] - err = testutil.WaitForBlocks(ctx, 10, centaurid) + err = testutil.WaitForBlocks(ctx, 5, centaurid) require.NoError(t, err) centaurid1UserBalInitial, err := centaurid.GetBalance(ctx, centaurid1User.FormattedAddress(), centaurid.Config().Denom) require.NoError(t, err) - require.Equal(t, fundAmount, centaurid1UserBalInitial) + require.Equal(t, fundAmount.Int64(), centaurid1UserBalInitial.Int64()) centauridChain := centaurid.(*cosmos.CosmosChain) // Verify a normal user cannot push a wasm light client contract - _, err = centauridChain.StoreClientContract(ctx, centaurid1User.KeyName(), "ics10_grandpa_cw.wasm") - require.ErrorContains(t, err, "invalid authority") + args := []string{"--title", "test", "--summary", "test", "--deposit", "500000000" + centauridChain.Config().Denom} + _, err = centauridChain.StoreClientContract(ctx, centaurid1User.KeyName(), "ics10_grandpa_cw.wasm", args...) + fmt.Println(err) + // require.ErrorContains(t, err, "invalid authority") + require.NoError(t, err, "invalid authority") proposal := cosmos.TxProposalv1{ Metadata: "none", @@ -140,7 +149,10 @@ func TestPushWasmClientCode(t *testing.T) { err = centauridChain.VoteOnProposalAllValidators(ctx, proposalTx.ProposalID, cosmos.ProposalVoteYes) require.NoError(t, err, "failed to submit votes") - _, err = cosmos.PollForProposalStatus(ctx, centauridChain, height, height+heightDelta, proposalTx.ProposalID, cosmos.ProposalStatusPassed) + propId, err := strconv.ParseUint(proposalTx.ProposalID, 10, 64) + require.NoError(t, err, "failed to convert proposal ID to uint64") + + _, err = cosmos.PollForProposalStatus(ctx, centauridChain, height, height+heightDelta, propId, govv1beta1.StatusPassed) require.NoError(t, err, "proposal status did not change to passed in expected number of blocks") err = testutil.WaitForBlocks(ctx, 2, centauridChain) @@ -148,16 +160,16 @@ func TestPushWasmClientCode(t *testing.T) { var getCodeQueryMsgRsp GetCodeQueryMsgResponse err = centauridChain.QueryClientContractCode(ctx, codeHash, &getCodeQueryMsgRsp) - codeHashByte32 := sha256.Sum256(getCodeQueryMsgRsp.Code) + codeHashByte32 := sha256.Sum256(getCodeQueryMsgRsp.Data) codeHash2 := hex.EncodeToString(codeHashByte32[:]) t.Logf("Contract codeHash from code: %s", codeHash2) require.NoError(t, err) - require.NotEmpty(t, getCodeQueryMsgRsp.Code) + require.NotEmpty(t, getCodeQueryMsgRsp.Data) require.Equal(t, codeHash, codeHash2) } type GetCodeQueryMsgResponse struct { - Code []byte `json:"code"` + Data []byte `json:"data"` } func modifyGenesisShortProposals(votingPeriod, maxDepositPeriod string) func(ibc.ChainConfig, []byte) ([]byte, error) { diff --git a/tests/interchaintest/setup.go b/tests/interchaintest/setup.go index be7fe8df1..e477732e5 100644 --- a/tests/interchaintest/setup.go +++ b/tests/interchaintest/setup.go @@ -1,9 +1,13 @@ package interchaintest import ( + sdkmath "cosmossdk.io/math" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" + "github.com/cosmos/cosmos-sdk/types/module/testutil" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" "os" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8/ibc" ) var ( @@ -18,22 +22,31 @@ var ( UidGid: "1025:1025", } - centauriConfig = ibc.ChainConfig{ + CentauriConfig = ibc.ChainConfig{ Type: "cosmos", Name: "centauri", ChainID: "centauri-2", Images: []ibc.DockerImage{CentauriImage}, - Bin: "centaurid", - Bech32Prefix: "centauri", + Bin: "picad", + Bech32Prefix: "pica", Denom: "stake", CoinType: "118", GasPrices: "0.0stake", GasAdjustment: 1.1, TrustingPeriod: "112h", NoHostMount: false, + EncodingConfig: composableEncoding(), ModifyGenesis: nil, ConfigFileOverrides: nil, } + + genesisWalletAmount = sdkmath.NewInt(10_000_000) + + DefaultRelayer = ibc.DockerImage{ + Repository: "ghcr.io/cosmos/relayer", + Version: "main", + UidGid: "1025:1025", + } ) // GetDockerImageInfo returns the appropriate repo and branch version string for integration with the CI pipeline. @@ -45,7 +58,15 @@ func GetDockerImageInfo() (repo, version string) { if !found { // make local-image repo = "centauri" - branchVersion = "local" + branchVersion = "debug" } return repo, branchVersion } + +func composableEncoding() *testutil.TestEncodingConfig { + cfg := cosmos.DefaultEncoding() + + // register custom types + wasmtypes.RegisterInterfaces(cfg.InterfaceRegistry) + return &cfg +} diff --git a/tests/interchaintest/upgrade_chain_test.go b/tests/interchaintest/upgrade_chain_test.go deleted file mode 100644 index 92c1952c8..000000000 --- a/tests/interchaintest/upgrade_chain_test.go +++ /dev/null @@ -1,146 +0,0 @@ -package interchaintest - -import ( - "context" - "testing" - "time" - - interchaintest "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/testutil" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" -) - -const ( - haltHeightDelta = uint64(20) - blocksAfterUpgrade = uint64(10) -) - -func TestCentauriUpgrade(t *testing.T) { - repo, version := GetDockerImageInfo() - CosmosChainUpgradeTest(t, repo, version, "v6_4_5") -} - -func CosmosChainUpgradeTest(t *testing.T, upgradeContainerRepo, upgradeVersion, upgradeName string) { - if testing.Short() { - t.Skip("skipping in short mode") - } - - t.Parallel() - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - { - ChainConfig: ibc.ChainConfig{ - Type: "cosmos", - Name: "centauri", - ChainID: "centaurid", - Images: []ibc.DockerImage{ - { - Repository: "ghcr.io/composablefi/composable-cosmos", - Version: "6.4.4", - UidGid: "1025:1025", - }, - }, - Bin: "picad", - Bech32Prefix: "pica", - Denom: "ppica", - GasPrices: "0.00ppica", - GasAdjustment: 1.3, - TrustingPeriod: "504h", - // EncodingConfig: WasmClientEncoding(), - NoHostMount: true, - ModifyGenesis: modifyGenesisShortProposals(votingPeriod, maxDepositPeriod), - }, - }, - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - chain := chains[0].(*cosmos.CosmosChain) - - ic := interchaintest.NewInterchain(). - AddChain(chain) - - ctx := context.Background() - client, network := interchaintest.DockerSetup(t) - - require.NoError(t, ic.Build(ctx, nil, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - // BlockDatabaseFile: interchaintest.DefaultBlockDatabaseFilepath(), - SkipPathCreation: true, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - const userFunds = int64(10_000_000_000) - users := interchaintest.GetAndFundTestUsers(t, ctx, t.Name(), userFunds, chain) - chainUser := users[0] - - height, err := chain.Height(ctx) - require.NoError(t, err, "error fetching height before submit upgrade proposal") - - haltHeight := height + haltHeightDelta - - proposal := cosmos.SoftwareUpgradeProposal{ - Deposit: "500000000" + chain.Config().Denom, // greater than min deposit - Title: "Chain Upgrade 1", - Name: upgradeName, - Description: "First chain software upgrade", - Height: haltHeight, - Info: "UPGRADE", - } - - upgradeTx, err := chain.LegacyUpgradeProposal(ctx, chainUser.KeyName(), proposal) - require.NoError(t, err, "error submitting software upgrade proposal tx") - - err = chain.VoteOnProposalAllValidators(ctx, upgradeTx.ProposalID, cosmos.ProposalVoteYes) - require.NoError(t, err, "failed to submit votes") - - _, err = cosmos.PollForProposalStatus(ctx, chain, height, haltHeight, upgradeTx.ProposalID, cosmos.ProposalStatusPassed) - require.NoError(t, err, "proposal status did not change to passed in expected number of blocks") - - timeoutCtx, timeoutCtxCancel := context.WithTimeout(ctx, time.Second*45) - defer timeoutCtxCancel() - - height, err = chain.Height(ctx) - require.NoError(t, err, "error fetching height before upgrade") - - // this should timeout due to chain halt at upgrade height. - _ = testutil.WaitForBlocks(timeoutCtx, int(haltHeight-height)+1, chain) - - height, err = chain.Height(ctx) - require.NoError(t, err, "error fetching height after chain should have halted") - - // make sure that chain is halted - require.Equal(t, haltHeight, height, "height is not equal to halt height") - - // bring down nodes to prepare for upgrade - err = chain.StopAllNodes(ctx) - require.NoError(t, err, "error stopping node(s)") - - // upgrade version on all nodes - chain.UpgradeVersion(ctx, client, upgradeContainerRepo, upgradeVersion) - - // start all nodes back up. - // validators reach consensus on first block after upgrade height - // and chain block production resumes. - err = chain.StartAllNodes(ctx) - require.NoError(t, err, "error starting upgraded node(s)") - - timeoutCtx, timeoutCtxCancel = context.WithTimeout(ctx, time.Second*45) - defer timeoutCtxCancel() - - err = testutil.WaitForBlocks(timeoutCtx, int(blocksAfterUpgrade), chain) - require.NoError(t, err, "chain did not produce blocks after upgrade") - - height, err = chain.Height(ctx) - require.NoError(t, err, "error fetching height after upgrade") - - require.GreaterOrEqual(t, height, haltHeight+blocksAfterUpgrade, "height did not increment enough after upgrade") -} diff --git a/tests/interchaintest/validator_test.go b/tests/interchaintest/validator_test.go deleted file mode 100644 index 149a94b0e..000000000 --- a/tests/interchaintest/validator_test.go +++ /dev/null @@ -1,102 +0,0 @@ -package interchaintest - -import ( - "context" - "fmt" - "testing" - "time" - - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" -) - -// TestValidator is a basic test to accrue enough token to join active validator set, gets slashed for missing or tombstoned for double signing -func TestValidator(t *testing.T) { - if testing.Short() { - t.Skip() - } - - t.Parallel() - - ctx := context.Background() - - // Create chain factory with Centauri - numVals := 5 - numFullNodes := 3 - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - { - Name: "centauri", - ChainConfig: centauriConfig, - NumValidators: &numVals, - NumFullNodes: &numFullNodes, - }, - }) - - // Get chains from the chain factory - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - centauri := chains[0].(*cosmos.CosmosChain) - - // Relayer Factory - client, network := interchaintest.DockerSetup(t) - - // Create a new Interchain object which describes the chains, relayers, and IBC connections we want to use - ic := interchaintest.NewInterchain().AddChain(centauri) - - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - err = ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - SkipPathCreation: true, - - // This can be used to write to the block database which will index all block data e.g. txs, msgs, events, etc. - // BlockDatabaseFile: interchaintest.DefaultBlockDatabaseFilepath(), - }) - require.NoError(t, err) - - t.Cleanup(func() { - _ = ic.Close() - }) - - err = testutil.WaitForBlocks(ctx, 1, centauri) - require.NoError(t, err) - - err = testutil.WaitForBlocks(ctx, 1, centauri) - require.NoError(t, err) - - err = centauri.Validators[1].StopContainer(ctx) - require.NoError(t, err) - - // _, _, err = centauri.Validators[1].ExecBin(ctx, "status") - // require.Error(t, err) - err = testutil.WaitForBlocks(ctx, 101, centauri) - require.NoError(t, err) - - validators, err := centauri.QueryValidators(ctx) - require.NoError(t, err) - - // slashingParams, err := centauri.QuerySlashingParams(ctx) - require.NoError(t, err) - - fmt.Println("validators", string(validators[1].ConsensusPubkey.Value)) - - defaultTime := time.Date(1970, time.January, 1, 0, 0, 0, 0, time.UTC) - - // sdk.ConsAddress(validators[1].ConsensusPubkey) - infos, err := centauri.QuerySigningInfos(ctx) - for _, info := range infos { - if info.JailedUntil != defaultTime { - fmt.Println("Jailed Validator", info.Address) - } - } - require.NoError(t, err) -} diff --git a/tmp-proposal.json b/tmp-proposal.json new file mode 100644 index 000000000..227069081 --- /dev/null +++ b/tmp-proposal.json @@ -0,0 +1,34 @@ +{ + "proposal": { + "id": "1", + "messages": [ + { + "type": "/ibc.lightclients.wasm.v1.MsgStoreCode", + "value": { + "signer": "pica10d07y265gmmuvt4z0w9aw880jnsr700jp7sqj5", + "wasm_byte_code": "AGFzbQEAAAAB/AIvYAR/f39/AGABfwF+YAV/f39/fwBgA39/fwBgAn9/AGADf39/AX9gAX8AYAF/AX9gAn9/AX9gAn9+AX9gAn9+AGAEf39/fwF/YAN/f38BfmAFf39/fn8AYAZ/f39/f38AYAV/f39/fwF/YAV/f39+fgBgBn9/f35+fwBgBn9/fn5/fwBgBn9+fn9/fwBgAn9/AX5gBH9/fn4AYAR/fn5/AGAIf39/f39/f38AYAl/f39/f39/f38AYAAAYAN/fn8Bf2ALf39/f39/f39/f38AYAF+AX9gAAF/YAR/f35/AGADf35+AGAHf39/f39/fwBgA39/fgBgA39+fwBgAn5/AX9gAn5+AX5gAX4BfmAHf39/f39/fwF/YAN+f38AYAR+fn9/AX9gBn9/f39/fwF/YAt/f39/f39/f39/fwF/YA9/f39/f39/f39/f39/f38Bf2AXf39/f39/f39/f39/f39/f39/f39/f38Bf2ADfn9/AX9gBX9+fn5+AAKaAg8DZW52BWFib3J0AAYDZW52B2RiX3JlYWQABwNlbnYIZGJfd3JpdGUABANlbnYJZGJfcmVtb3ZlAAYDZW52B2RiX3NjYW4ABQNlbnYHZGJfbmV4dAAHA2Vudg1hZGRyX3ZhbGlkYXRlAAcDZW52EWFkZHJfY2Fub25pY2FsaXplAAgDZW52DWFkZHJfaHVtYW5pemUACANlbnYQc2VjcDI1NmsxX3ZlcmlmeQAFA2VudhhzZWNwMjU2azFfcmVjb3Zlcl9wdWJrZXkADANlbnYOZWQyNTUxOV92ZXJpZnkABQNlbnYUZWQyNTUxOV9iYXRjaF92ZXJpZnkABQNlbnYFZGVidWcABgNlbnYLcXVlcnlfY2hhaW4ABwO4EbYRDQADAAADBAQEBAQEAAADAwMDAwMDAAQAAwQEBAQEBAQEBAQEBAQEAwMDAwMDAwYGBgICAgICBAMCAAACAg4ADwMPBAgHBgYLAQgIBgYGCAUFBAUFBQUFCwQLBAMECAMIBAQCAgICAgICAgICAgICAwMABgcAAwMDAwQAAAIBAwMICAgICAgICAgICAgICAYGBgYGCAgFAwMDAwMEDwMPBAQDAAUPCAQEBAQEBAQEBAQEDwQABAQIAwQABgQLBgMEBwgEBAQDEAYICAgGBgYGCwgFAwMLCwMEBAcEAwMDAAMRBAMIEhMAAgUFBAMEAAgICAYCBgMADwQAAAMFBAUGBggABwYGBQAMAAMOFAICAgYGBAQEBAQEBAQEAwMDAwEBAQEDAgQEAwQEAwMEBAMDBwgIBQcIBwgLCAgICAgICAgCAgMVEhYTCAgICAgGBggFCwMCAwMCBAMGBgAADgAAAwMDAwMDCAgEAwMEAwMDBAQEBAYGBgYGBgYGBgQDBAQEBAMEBBcXBAQXAAQEAwQIBAgYBAQEBgYGBgYGBgQEBAQZCAUDCAcaCAgHBAQDAwMDAwQbBA4CAwMXFxcIBwsCHBwcAAIAAw4DDgMEAwMODgQEBAQEBAQEBAQEBAMEBAQEBAQEBAQEBAQEDgQEDgQODg4EDg4ODg4ODg4ODg4ODgQHCAQEDgMGBgYGDgQEBgYGDhgABgYGHQQECAYDBggGBAQICAgICAgICAgIBgYGBgYGCAgFCAgAAA8ECAAFBAgGBgYGBAAAAwMDAwQEBAgGAA4AAwMDBAcGHggGBggIBgYGBgYGBgYGBAQBAQEBGQgFBwQDBAsLCwsLAwQEBAQGBgYGBAQEBAkJCQkKCgoKAggDCAYCBBAEBAQEAwMDAwMEBAMEAwMEAwgDCwgECgMBAQMOAx8DBAsFBAgDBgYEAwQEBAQDBAQABAYIAwMEAAMEAwMEBAMDAwQEBAQAAyAGBgYEAQMGBAQDDgQEBAQEBAQOBAQEDgQODg4ODgMBBAYGGQgFAwIDBBkEBAQEBAAAAAAAAAQEBAQEAwcEBgYDCAgICAgICAgICAgGBggFBAQACAgABAMDBAgICAYGBgMEAwQICAUIBQgEAwgAAgMgGQAAAxcgFxcDAAgICAgICAgICAYZBwYIBgMDIQAEIAACFwcEAAQDAwMGBAQEAAQEBAQICAMIAwMHBAQABAQEAwMDCAYEBAQEBAMDAQEDCAgICAgICAgICAYGBgQEAwMDBAQDBAYGBAQGBgYDBgYGBgYGBgYdBAgICAYGBAQEBAgEBgQGBgYEBwQGBgYGBAQBAQQEBgYEBAkJCgoIAwgEAAQICAgIBQcIAwMEBgYGCAQEAAMICAQEBAQEBgcEBAgGBgYGBgQEAQEEBAYGBAQJCQoKCAMICAUHCAQEBAQEAwMBAQgICAgHAAQDAwAEAwgAHQcHAAMHAwgIBAQECAgIBAQDBgYGAAADBwMICAUABAQEAwQDCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAcICAgDBBUEBAQEBAQECAgICAgICAgICAgICAgICAgICAgICAgGBggIBQgCCAgEBAQEBAgIBAIEBgYECAgICAgICAYfBgMDCAgICAYDAwQECAMICAYGBgYGBgYGBgYGBAQEBAQEBAQEAwMBAQEBAQEBAQEBBAQEBAQEBAQEBAYGBgYGBAQEBAQJCQkJCgoKCQoICAQICAgICAgICAgICAgICAgIAwgICAgIBggKAQQIBAgIAAMDCAYGHwgIBgYGBiACBgQEBgYEBAMBBAQGBAkKCAgIBAQDAQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAYGBgYICAgIBAYiIgQEBAgIBgYGBgYZDgMFCAgIBwcGBAcFAAMICAYEBgYGBgYGBAQEBAQDAQEBAQQEBAQGBgQECQoJCggIBAgICAgICAYICAgICAgICAQDBAYICAUIAAQDCAcICAYICAUDAx8BBAcEBwcHBwcHBwcECAMECAgHBwEGCAYACwsECAgIBQgIBAgGCAUIBQAABwAGBgcFCAgLBggGAgYDBgYCCAgDCAgGCAcIAAQICAgGHQ4FBwgCBwAEAwYGCAUECAQDCAgDCAYBAAgIBgYIBQgFBggGCAgFAgQIBAcEBwYHCAgEBAMDIwADCAgkJCQIJSUkJAYHBwcHCAElCAYEBAADBAQEBAQAAwYICAMDAwMDAwQDBAQGCAQGAgMGBAQGBgYBFAoHAwQEAAMIAwgECAgIBgIOCA4ICAAHBAQABwcHByUIBggDCAgGCAYEAAADAA4AAAMAAAMAAAMEAwIAAAMZAAMDAwUICAgGBgYBAwYEBAEBAQUICAgDBB0EBQYGBgYGBgMICAQIBQAIBwQGBB0GBAIZBh0dGQcIBgcIJgUZBAgGBgQIAwsIBAYEBAQEAgQEBwgHBwcdBwcHBgcHBAQEBAMICAcdBwcHBwcHBwgHAw8LBQgHBwcICAgICAgICAYCAiAICAUEBAgDBAQEBAYHBwgICAgJBwcHBwcEBwcHBAcHCAMDCAgICAgGCAQIBQMABBkEBAQECAQEAwQICAYEAwMDBQMDCAAICAgFCAEDCAcAAw8DAwgIBwcHCAgIBAMgCAgCBQcHBQcDBQcnCCgpCAgFCAgDBAgPAgUIBwcHACYqKywmAA8mBAgIBQcHBQgICAMDAwYGAwgICAYCBAQECAMCAwgmCAgICAADAwMILQgICAgICAgICAgICAgHBwcICAUFLgUFBQUFBRYuLgQHAXABqQepBwUDAQASBhkDfwFBgIDAAAt/AEHI5cQAC38AQdDlxAALB/UBDQZtZW1vcnkCAAtpbnN0YW50aWF0ZQD3AQdleGVjdXRlAPgBBXF1ZXJ5ANYCIGV4dF9oYXNoaW5nX2JsYWtlMl8yNTZfdmVyc2lvbl8xAM4DHmV4dF9oYXNoaW5nX3R3b3hfMTI4X3ZlcnNpb25fMQDPAx1leHRfaGFzaGluZ190d294XzY0X3ZlcnNpb25fMQDQAwhhbGxvY2F0ZQDyBgpkZWFsbG9jYXRlAPMGEXJlcXVpcmVzX2l0ZXJhdG9yAPEGE2ludGVyZmFjZV92ZXJzaW9uXzgA8QYKX19kYXRhX2VuZAMBC19faGVhcF9iYXNlAwIJzQ4BAEEBC6gH2RC/EKwE3A5StAG0BJwBsgS3BLMEmAGZAbYEmxFc4wxbXl25BFqrEdgBkAFZ9QLrBFiSAdoClAH0Av0Buw29EKABygTLBJ8BsQGyAaEBpAGjAdgC2QL/AZAEpwvFAdwHsQRutgrABuwJlQGoC90BzAHcAeAB3wHaAdcBgALGEI8BkAWKBZIFmAWcBY0FiwWUBZcFmwWOBYwFkQWVBZoFjwWJBZMFlgWZBZ8CnQKcApsC/A6bAdsC2QbcBtoG2wbeBt8G4AbhBuIG4wbkBuUG5gbcAt4C3QKwBJMB1wK4DbgElgHcBJcBmgHZAbUEnwOmA6QDsQOwA6UDzgjPCKEDwgOiA6MDyAWqA6EKwg60CqgEvwSMAb0EV7sEwgTABMEE6ASODqIBnQPzBP4E/QTyBJEB/gH0BMsCxwKoAq4CoAKnAqwCzALKArACogKmAqoC8ATOAskCrQKjAqQCqQLNAsgCrwKhAqUCqwLtBKAFngX3BPsE9gSfBfUE+QTuBPgE8QT6BOwE7wX1BfQF8wXxBewGjgaRBpAGyAaNBrMQjAaXBscGtQayBusGtgbtBu8GtAazBrgGvQa8BrkGuwa6BosGsAatBrEGxgbnBukGrgbqBugG1QbKBtQG0wbJBtIG0AbRBs0GzwbMBs4G8AaSB48HoAf/B4AIswewB9MHsQefB7IHtAf+B68HiwzXB9YH1AfVB+gHrQesB6UHqAehB6QHpwfnB64HqwepB6IHowemB+kH+gf4B+sH7AfqB/kH5gftB/EH7gfzB/UH9gfwB+8H8gf0B/cHigiRCJAIqhHaDp4Iwgi/CLoIvgi2CLkIvAifCMEIwAi9CLcIuAi7CJ0IsQivCKIIowihCLAIoAikCKgIpQiqCKwIrginCKYIqQirCK0I3wifDuAIuBGRCZ4Jrwn2CLAJhAmqCasJogmZCacJoAmCCaYJlQmBCYkJkgn3CKUJ/Qj1CKkJkwmPCYcJkAmICZ0Jmwn7CPgIign8CJ8JrQmLCY4J+QisCYwJnAmaCbEJlAmGCbIJ8wiACfoIgwmhCZYJowmNCagJ9Aj/CJcJpAmYCf4ImAu1CqkKnAuSC4UJ8Qi2CcYJwwm5CdMJ4wm/CccJ3wnbCcQJvAnZCbgJ3QnACeYJtAniCbUJ3AnCCckJ6Qm3CeEJ7gnLCeAJ6gnvCdoJvQnPCegJ8Am6CdEJyAnSCdYJ3gnOCesJxQnMCdUJzQnkCdAJ5QnBCcoJuwm+CecJ1AnXCf0JhAqBCokKjAr+CYsKhwqCCpEK+wmKCogK/AmOCoMKjQqFCoYKwAqPCv8JkgqWCpQKlQqTCpcKrgqoCqoKrAqrCq8KvwrHCsoNkAuMC9AK4ArNCtYKygqOC4sLzwreCswK1QrLCv8K/gqAC98KzgrICo0LigvbCskKjwuJC9wKwgqGC4IL1ArYCsEKhQuBC9IK2QrFCogLhAvRCtcKwwrdCsQKhwuDC9MK2gqZCsYKkA2VC5QLlgucDJMLlwufEaQLowvrCugK4gr0CvcK+gqsC+8K6QrlCvMK9Qr5CqsL7grqCuQK8Qr2CvsKqgvtCucK4QrwCvgKqQvsCuYK4wryCvwK/QqzC8YLxQvCC8QLwQvDC7ILvwu+C7ULtwu0C7YLlAyTDJEM4gvcC/ILiAz/C/UL5Av0C8oLywvnC/4L6gvoC9sLxwvgC4IM+gvMC9cLgwzYC9AL3gvJC4wM8AvTC9IL2QvrC/sLzQvsC/gL+QuGDO0L7gv3C+EL8wvVC/YL0QuJDOkLhwzfC4oM/QvvC90LgAzUC9YLzwuBDIQM8QvIC9oLzgvjC/wLhQzAC+ULkAySDJYMnQy6C7kLuAu7C7wLvQueDKcMkRGsDLIRtAy6DNoM2QzADMIMvAzBDLsM0wzSDNQMxQy/DLYM2AzWDL4MxAy3DNcM1Qy9DMMMuAzrDLkMygzIDMYMzAzODM8M2wzLDMkMxwzNDNAM0QzdDPIM3AzfDOAM3gzhDPEM5wzqDOgM6QyzDLIM8wz2DPQM9QyLDYcNmg2bDY8Njg2UDZMNlQ2WDZ4Nog2fDaENmQ2XDZgNpw2lDakNpg2kDaMNrA2rDbANrw3EDbQNvw21Db0NvA3CDcUNww3bDdUN0Q3TDdIN6A3QDdwN3Q3iDeYN4w3lDekN7A3qDesNiQ6ADv8Nng6gDqQOpQ6mDqsOrA6tDq4OsQ63DrYOsw6yDsYOwA7HDsUOhxHMDtkO3Q7YDt4O3w7iDuMO5A7lDucO6Q7qDusO7A7gDu0O7g7vDvMO9A71Dv0O/g6BD4YPhQ+ED4IPmg+ND68Pug+TD54Pmw+dD4wPiw+VD5IPtA+PD7YPlw+HD4kPmA/BD8IPww/ED4gPlA+3D+8P8A/yD/YP/A/6D/sP8Q/1D6ARnRChEKUQohCkEJ8QnhCgELQQzhDTENQQ2BDDEIYRwBDBELUQxBDbEOcQ6BCxEekQ6hDrELARrhGsEa8RrREKmZ40thHHGQMLfwF+Bn8jgICAgABBgAFrIgUkgICAgAAgASgCCCEGAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgQiBy8BtgEiCEELSQ0AIAEoAgAhCCAFQeAAaiAGEKyQgIAAIAVB4ABqQQhqIgkoAgAhCiAFKAJkIQsgBSgCYCEBQZgEQQgQtoWAgAAiDEUNBiAMQQA2ArABIAwgBy8BtgEiDSABQX9zaiIGOwG2ASAFQeAAakEYaiAHQbgBaiIOIAFBBXRqIg9BGGopAAA3AwAgBUHgAGpBEGogD0EQaikAADcDACAJIA9BCGopAAA3AwAgBSAPKQAANwNgIAZBDE8NByANIAFBAWoiD2sgBkcNCCAHIAFBBHRqIgkoAgghDSAJKQMAIRAgDEG4AWogDiAPQQV0aiAGQQV0ELyRgIAAGiAMIAcgD0EEdGogBkEEdBC8kYCAACEJIAcgATsBtgEgBUHAAGpBCGogBUHgAGpBCGopAwA3AwAgBUHAAGpBEGogBUHgAGpBEGopAwA3AwAgBUHAAGpBGGogBUHgAGpBGGopAwA3AwAgBSAFKQNgNwNAIAkgByALGyIGQbgBaiIOIApBBXRqIQEgCkEBaiILIAYvAbYBIg9NDQEgASACKQAANwAAIAFBGGogAkEYaikAADcAACABQRBqIAJBEGopAAA3AAAgAUEIaiACQQhqKQAANwAADAILIAdBuAFqIgwgBkEFdGohAQJAAkAgBkEBaiIKIAhNDQAgASACKQAANwAAIAFBGGogAkEYaikAADcAACABQRBqIAJBEGopAAA3AAAgAUEIaiACQQhqKQAANwAADAELIAwgCkEFdGogASAIIAZrIgxBBXQQwZGAgAAaIAFBGGogAkEYaikAADcAACABQRBqIAJBEGopAAA3AAAgAUEIaiACQQhqKQAANwAAIAEgAikAADcAACAHIApBBHRqIAcgBkEEdGogDEEEdBDBkYCAABoLIAcgBkEEdGoiESADNwMAIBEgBDYCCCAHIAhBAWo7AbYBDAILIA4gC0EFdGogASAPIAprIg5BBXQQwZGAgAAaIAFBGGogAkEYaikAADcAACABQRBqIAJBEGopAAA3AAAgAUEIaiACQQhqKQAANwAAIAEgAikAADcAACAGIAtBBHRqIAYgCkEEdGogDkEEdBDBkYCAABoLIAYgCkEEdGoiESADNwMAIBEgBDYCCCAFQSBqQQhqIgIgBUHAAGpBCGopAwA3AwAgBUEgakEQaiIBIAVBwABqQRBqKQMANwMAIAVBIGpBGGoiCiAFQcAAakEYaikDADcDACAGIA9BAWo7AbYBIAUgBSkDQDcDICAQQgBSDQELIAAgETYCQCAAQgA3AyAMAQsgBUEYaiAKKQMANwMAIAVBEGogASkDADcDACAFQQhqIAIpAwA3AwAgBSAFKQMgNwMAAkACQCAHKAKwASICDQBBACEPDAELIBAhAyANIQsgCCEPIAchBkEAIQEgCSEOA0AgAiEHIA8gAUcNBiAGQbQBai8BACECAkACQAJAAkACQCAHLwG2ASIBQQtJDQAgBUHgAGogAhCskICAACAFKAJoIQQgBSgCZCESIAUoAmAhAiAHLwG2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QXxqKAIAIgYgAUF/ajsBMCAGIAU2AgAgBCgCACIGIAE7ATAgBiAFNgIAIARBEGohBEEEIQcgAiABQQRqIgFqQQNHDQAMCwsLQTRBBBCokICAAAALIARBC0Gog8CAABC5kICAAAALQfCCwIAAQShBmIPAgAAQu5CAgAAAC0HIg8CAAEE1QYCEwIAAELuQgIAAAAtB5ABBBBCokICAAAALIARBC0Gog8CAABC5kICAAAALQfCCwIAAQShBmIPAgAAQu5CAgAAACyAGQQxBuIPAgAAQuZCAgAAAC0HwgsCAAEEoQZiDwIAAELuQgIAAAAsgACAINgIMIAAgDDYCCCAAIAU2AgQgACAGNgIAQRAhBwsgDSEFCyAAIAdqIAk2AgAgACAFNgIUIANBEGokgICAgAAL0x0BF38jgICAgABBwAJrIgQkgICAgAAgASgCCCEFAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASgCBCIGLwG+AyIHQQtJDQAgASgCACEBIARB2AFqIAUQrJCAgAAgBEHYAWpBCGooAgAhCCAEKALcASEJIAQoAtgBIQdBoAZBBBC2hYCAACIFRQ0EIAVBADYCACAFIAYvAb4DIgogB0F/c2oiCzsBvgMgBEEYaiAGQcADaiIMIAdBBXRqIg1BGGopAAA3AwAgBEEQaiANQRBqKQAANwMAIARBCGogDUEIaikAADcDACAEIA0pAAA3AwAgBEGQAWpBIGogBkEEaiIOIAdBKGxqIg1BIGopAgA3AwAgBEGQAWpBGGogDUEYaikCADcDACAEQZABakEQaiANQRBqKQIANwMAIARBkAFqQQhqIA1BCGopAgA3AwAgBCANKQIANwOQASALQQxPDQUgCiAHQQFqIg1rIAtHDQYgBUHAA2ogDCANQQV0aiALQQV0ELyRgIAAGiAFQQRqIA4gDUEobGogC0EobBC8kYCAABogBiAHOwG+AyAEQdgBakEIaiAEQQhqKQMANwMAIARB2AFqQRBqIARBEGopAwA3AwAgBEHYAWpBGGogBEEYaikDADcDACAEQdgBakEoaiAEQZABakEIaikDADcDACAEQYgCaiAEQZABakEQaikDADcDACAEQZACaiAEQZABakEYaikDADcDACAEQZgCaiAEQbABaikDADcDACAEIAQpAwA3A9gBIAQgBCkDkAE3A/gBIARBkAFqIARB2AFqQcgAELyRgIAAGiAFIAYgCRsiDUHAA2oiCiAIQQV0aiEHIAhBAWoiCSANLwG+AyILTQ0BIAcgAikAADcAACAHQRhqIAJBGGopAAA3AAAgB0EQaiACQRBqKQAANwAAIAdBCGogAkEIaikAADcAAAwCCyAGQcADaiILIAVBBXRqIQECQAJAIAVBAWoiDSAHTQ0AIAEgAikAADcAACABQRhqIAJBGGopAAA3AAAgAUEQaiACQRBqKQAANwAAIAFBCGogAkEIaikAADcAAAwBCyALIA1BBXRqIAEgByAFayILQQV0EMGRgIAAGiABQRhqIAJBGGopAAA3AAAgAUEQaiACQRBqKQAANwAAIAFBCGogAkEIaikAADcAACABIAIpAAA3AAAgBkEEaiICIA1BKGxqIAIgBUEobGogC0EobBDBkYCAABoLIAYgBUEobGoiAkEkaiADQSBqKQIANwIAIAJBHGogA0EYaikCADcCACACQRRqIANBEGopAgA3AgAgAkEMaiADQQhqKQIANwIAIAJBBGoiAiADKQIANwIAIABBADYCBCAAIAI2AlggBiAHQQFqOwG+AwwCCyAKIAlBBXRqIAcgCyAIayIKQQV0EMGRgIAAGiAHQRhqIAJBGGopAAA3AAAgB0EQaiACQRBqKQAANwAAIAdBCGogAkEIaikAADcAACAHIAIpAAA3AAAgDUEEaiICIAlBKGxqIAIgCEEobGogCkEobBDBkYCAABoLIA0gCEEobGoiAkEkaiADQSBqKQIANwIAIAJBHGogA0EYaikCADcCACACQRRqIANBEGopAgA3AgAgAkEMaiADQQhqKQIANwIAIAJBBGoiDyADKQIANwIAIA0gC0EBajsBvgMgBEHIAGogBEGQAWpByAAQvJGAgAAaIAQgBEHIAGpByAAQvJGAgAAhDQJAAkAgBigCACIDDQBBACEKDAELIA1B2AFqQSBqIQggDUEgaiEJIAEhCkEAIQIDQCAFIRAgBiEBIAMhBiAKIAJHDQYgAUG8A2ovAQAhAwJAAkACQCAGLwG+AyICQQtJDQAgDUHYAWogAxCskICAACANKALgASELIA0oAtwBIREgDSgC2AEhAyAGLwG+AyESQdAGQQQQtoWAgAAiBUUNCiAFQQA2AgAgBSAGLwG+AyIMIANBf3NqIgE7Ab4DIA1BoAJqQRhqIhMgBkHAA2oiDiADQQV0aiICQRhqKQAANwMAIA1BoAJqQRBqIhQgAkEQaikAADcDACANQaACakEIaiIVIAJBCGopAAA3AwAgDSACKQAANwOgAiANQcgAakEgaiIWIAZBBGoiFyADQShsaiICQSBqKQIANwMAIA1ByABqQRhqIhggAkEYaikCADcDACANQcgAakEQaiIZIAJBEGopAgA3AwAgDUHIAGpBCGoiGiACQQhqKQIANwMAIA0gAikCADcDSCABQQxPDQsgDCADQQFqIgdrIAFHDQwgBUHAA2ogDiAHQQV0aiABQQV0ELyRgIAAGiAFQQRqIBcgB0EobGogAUEobBC8kYCAABogBiADOwG+AyANQdgBakEIaiIOIBUpAwA3AwAgDUHYAWpBEGoiFSAUKQMANwMAIA1B2AFqQRhqIhQgEykDADcDACAIIA0pA0g3AgAgCEEIaiAaKQMANwIAIAhBEGogGSkDADcCACAIQRhqIBgpAwA3AgAgCEEgaiAWKQMANwIAIA0gDSkDoAI3A9gBIAUvAb4DIgJBAWohASACQQxPDQ0gEiADayIDIAFHDQ4gCkEBaiEKIAVBoAZqIAYgB0ECdGpBoAZqIANBAnQQvJGAgAAhB0EAIQMCQANAIAcgA0ECdGooAgAiASADOwG8AyABIAU2AgAgAyACTw0BIAMgAyACSWoiAyACTQ0ACwsgDUGQAWogDUHYAWpByAAQvJGAgAAaIAUgBiARGyIBQcADaiIHIAtBBXRqIQMgC0EBaiICIAEvAb4DIgxNDQEgAyANKQMANwAAIANBGGogDUEYaikDADcAACADQRBqIA1BEGopAwA3AAAgA0EIaiANQQhqKQMANwAAIAggCUEgaikCADcDACAUIAlBGGopAgA3AwAgFSAJQRBqKQIANwMAIA4gCUEIaikCADcDACANIAkpAgA3A9gBDAILIAZBwANqIgsgA0EFdGohBSADQQFqIQEgAkEBaiEHAkACQCACIANLDQAgBSANKQMANwAAIAVBGGogDUEYaikDADcAACAFQRBqIA1BEGopAwA3AAAgBUEIaiANQQhqKQMANwAAIAYgA0EobGoiBUEEaiAJKQIANwIAIAVBDGogCUEIaikCADcCACAFQRRqIAlBEGopAgA3AgAgBUEcaiAJQRhqKQIANwIAIAVBJGog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BiADQeAAakEYaiAFQQhqIgwgAUEFdGoiDUEYaikAADcDACADQeAAakEQaiANQRBqKQAANwMAIAcgDUEIaikAADcDACADIA0pAAA3A2AgC0EMTw0HIAogAUEBaiINayALRw0IIARBCGogDCANQQV0aiALQQV0ELyRgIAAGiAFIAE7AQYgA0HAAGpBCGoiCyADQeAAakEIaikDADcDACADQcAAakEQaiIHIANB4ABqQRBqKQMANwMAIANBwABqQRhqIgogA0HgAGpBGGopAwA3AwAgAyADKQNgNwNAIAQgBSAJGyIOQQhqIQECQCAIQQFqIgkgDi8BBiINSw0AIAEgCUEFdGogASAIQQV0aiANIAhrQQV0EMGRgIAAGgsgASAIQQV0aiIBQRhqIAJBGGopAAA3AAAgASACKQAANwAAIANBIGpBCGoiCCALKQMANwMAIANBIGpBEGoiCyAHKQMANwMAIANBIGpBGGoiByAKKQMANwMAIAFBEGogAkEQaikAADcAACABQQhqIAJBCGopAAA3AAAgDiANQQFqOwEGIAMgAykDQDcDICADQRhqIAcpAwA3AwAgA0EQaiALKQMANwMAIANBCGogCCkDADcDACADIAMpAyA3AwAgBSgCACICDQFBACEIDAILIAVBCGohAQJAIARBAWoiDSAGSw0AIAEgDUEFdGogASAEQQV0aiAGIARrQQV0EMGRgIAAGgsgASAEQQV0aiIBQRhqIAJBGGopAAA3AAAgACAFNgIwIABBADYCBCABIAIpAAA3AAAgAUEQaiACQRBqKQAANwAAIAFBCGogAkEIaikAADcAACAFIAZBAWo7AQYMBAsgBiEIQQAhAQNAIAQhDyAFIQYgAiEFIAggAUcNCCAGQQRqLwEAIQIgBS8BBiIBQQtJDQIgA0HgAGogAhCskICAACADKAJoIQsgAygCZCEQIAMoAmAhAiAFLwEGIRFBmANBBBC2hYCAACIERQ0JIARBADYCACAEIAUvAQYiByACQX9zaiIGOwEGIANB4ABqQRhqIgkgBUEIaiISIAJBBXRqIgFBGGopAAA3AwAgA0HgAGpBEGoiCiABQRBqKQAANwMAIANB4ABqQQhqIgwgAUEIaikAADcDACADIAEpAAA3A2AgBkEMTw0KIAcgAkEBaiINayAGRw0LIARBCGogEiANQQV0aiAGQQV0ELyRgIAAGiAFIAI7AQYgA0HAAGpBCGoiByAMKQMANwMAIANBwABqQRBqIhIgCikDADcDACADQcAAakEYaiITIAkpAwA3AwAgAyADKQNgNwNAIAQvAQYiAUEBaiEGIAFBDE8NDCARIAJrIgIgBkcNDSAIQQFqIQggBEHoAmogBSANQQJ0akHoAmogAkECdBC8kYCAACENQQAhAgJAA0AgDSACQQJ0aigCACIGIAI7AQQgBiAENgIAIAIgAU8NASACIAIgAUlqIgIgAU0NAAsLIAkgEykDADcDACAKIBIpAwA3AwAgDCAHKQMANwMAIAMgAykDQDcDYCAEIAUgEBsiBkEIaiECAkAgC0EBaiIBIAYvAQYiB0sNACACIAFBBXRqIAIgC0EFdGogByALa0EFdBDBkYCAABoLIAdBAWohDSACIAtBBXRqIgIgAykDADcAACACQRhqIANBGGoiESkDADcAACACQRBqIANBEGoiEikDADcAACACQQhqIANBCGoiECkDADcAACAGQegCaiECAkAgC0ECaiIUIAdBAmoiE08NACACIBRBAnRqIAIgAUECdGogByALa0ECdBDBkYCAABoLIAIgAUECdGogDzYCACAGIA07AQYCQCABIBNPDQACQCAHIAtrIg9BAWpBA3EiDUUNACAGIAtBAnRqQewCaiECA0AgAigCACILIAE7AQQgCyAGNgIAIAJBBGohAiABQQFqIQEgDUF/aiINDQALCyAPQQNJDQAgAUEDaiECQX4gB2shCyAGIAFBAnRqQfQCaiEBA0AgAUF0aigCACINIAJBfWo7AQQgDSAGNgIAIAFBeGooAgAiDSACQX5qOwEEIA0gBjYCACABQXxqKAIAIg0gAkF/ajsBBCANIAY2AgAgASgCACINIAI7AQQgDSAGNgIAIAFBEGohASALIAJBBGoiAmpBA0cNAAsLIBEgCSkDADcDACASIAopAwA3AwAgECAMKQMANwMAIAMgAykDYDcDACAIIQEgCCEGIAUoAgAiAg0ACwsgACADKQMANwIQIAAgCDYCCCAAIAU2AgQgACAGNgIAIABBKGogA0EYaikDADcCACAAQSBqIANBEGopAwA3AgAgAEEYaiADQQhqKQMANwIAQQwhCAwBCyAFQQhqIgsgAkEFdGohBCACQQFqIQYgAUEBaiENAkACQCABIAJLDQAg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ACEaIA8gECkAADcAACAVIA43AAAgFyANNwAAIBkgDDcAACADIBo3AwggESAFIAhB8ABsakEEaiIFQfAAELyRgIAAIRAgBSADQcACakHwABC8kYCAABogA0GwA2pBGGoiDyATKQMANwMAIANBsANqQRBqIgggFikDADcDACADQbADakEIaiILIBgpAwA3AwAgAyADKQMINwOwAyADQbABaiAQQfAAELyRgIAAGiAJIBJqIgVBGGogDykDADcAACAFQRBqIAgpAwA3AAAgBUEIaiALKQMANwAAIAUgAykDsAM3AAAgCiAUaiADQbABakHwABC8kYCAABogAUEBRg0FIARBuAxqIgUgAkECdCICaiAFIAdBAnRBBGoQwZGAgAAaIAUgBiAAQQJ0akG4DGogAhC8kYCAABogBCgCuAwiBUEAOwHUCSAFIAQ2AgAgBEG8DGooAgAiBUEBOwHUCSAFIAQ2AgAgBEHADGooAgAiBUECOwHUCSAFIAQ2AgAgBEHEDGooAgAiBUEDOwHUCSAFIAQ2AgAgBEHIDGooAgAiBUEEOwHUCSAFIAQ2AgAgBEHMDGooAgAiBUEFOwHUCSAFIAQ2AgAMAwtBsIjAgABBGUHMiMCAABC7kICAAAALQfCCwIAAQShBmIPAgAAQu5CAgAAAC0HUhMCAAEEnQfyEwIAAELuQgIAAAAsgBCEFIAFBf2oiAQ0ACwsgA0HQA2okgICAgAALqgwBDX8jgICAgABBkAFrIgMkgICAgAAgA0E4akEIaiIEIAEoAgQiBUEIaiIGIAEoAggiB0EFdGoiCEEIaikAADcDACADQThqQRBqIgkgCEEQaikAADcDACADQThqQRhqIgogCEEYaikAADcDACADIAgpAAA3AzggASgCACELIAggBiAHQQFqIgxBBXRqIAUvAQYiASAHQX9zakEFdBDBkYCAABogBSABQX9qIgg7AQYgA0EYakEYaiINIAopAwA3AwAgA0EYakEQaiIOIAkpAwA3AwAgA0EYakEIaiIPIAQpAwA3AwAgAyADKQM4NwMYAkAgCEH//wNxQQVPDQACQAJAAkAgBSgCACIBRQ0AIAtBAWohBAJAIAVBBGovAQAiBg0AAkAgAS8BBg0AIANB6ABqQRRqQQE2AgAgA0E4akEUakEANgIAIANCATcCbCADQYiCwIAANgJoIANBgYCAgAA2AlwgA0GAgMCAADYCSCADQgE3AjwgA0GkgsCAADYCOCADIANB2ABqNgJ4IAMgA0E4ajYCWCADQegAakGsgsCAABC2kICAAAALAkAgCEH//wNxIAFB7AJqKAIAIggvAQZqQQFqQQxJDQAgAyAINgJQIAMgCzYCTCADIAU2AkggAyALNgJEIANBADYCQCADIAE2AjwgAyAENgI4IANBOGpBARCYgICAAAwCCyADIAg2AlAgAyALNgJMIAMgBTYCSCADIAs2AkQgA0EANgJAIAMgATYCPCADIAQ2AjggA0HYAGogA0E4akEAIAcQnICAgAAMAwsCQCAIQf//A3EgASAGQX9qIghBAnRqQegCaigCACIGLwEGakEBakEMSQ0AIAMgBTYCUCADIAs2AkwgAyAGNgJIIAMgCzYCRCADIAg2AkAgAyABNgI8IAMgBDYCOCADQThqQQEQlYCAgAAgAyAMNgJgDAILIAMgBTYCUCADIAs2AkwgAyAGNgJIIAMgCzYCRCADIAg2AkAgAyABNgI8IAMgBDYCOCADQdgAaiADQThqQQEgBxCcgICAAAwCCyADIAc2AmALIAMgBTYCXCADIAs2AlgLIAMoAmAhByADKAJYIQsgAygCXCIFKAIAIghFDQAgC0EBaiEBA0AgCC8BBiIGQQRLDQECQCAIKAIAIgRFDQAgAUEBaiEJAkAgCEEEai8BACIKDQACQCAELwEGDQAgA0HoAGpBFGpBATYCACADQThqQRRqQQA2AgAgA0IBNwJsIANBiILAgAA2AmggA0GBgICAADYCjAEgA0GAgMCAADYCSCADQgE3AjwgA0GkgsCAADYCOCADIANBiAFqNgJ4IAMgA0E4ajYCiAEgA0HoAGpBrILAgAAQtpCAgAAACyADIARB7AJqKAIAIgo2AoABIAMgATYCfCADIAg2AnggAyABNgJ0IANBADYCcCADIAQ2AmwgAyAJNgJoAkAgBiAKLwEGakEBakEMSQ0AIANB6ABqQQUgBmsQmICAgABBACEIQQANAwwECyADQThqQRhqIANB6ABqQRhqKAIANgIAIANBOGpBEGogA0HoAGpBEGopAwA3AwAgA0E4akEIaiADQegAakEIaikDADcDACADIAMpA2g3AzggA0EIaiADQThqEJmAgIAAIAMoAgghASADKAIMIggNAgwDCyAEIApBf2oiDEECdGpB6AJqKAIAIQogAyAINgKAASADIAE2AnwgAyAKNgJ4IAMgATYCdCADIAw2AnAgAyAENgJsIAMgCTYCaAJAIAYgCi8BBmpBAWpBDEkNACADQegAakEFIAZrEJWAgIAAQQAhCEEADQIMAwsgA0E4akEYaiADQegAakEYaigCADYCACADQThqQRBqIANB6ABqQRBqKQMANwMAIANBOGpBCGogA0HoAGpBCGopAwA3AwAgAyADKQNoNwM4IANBEGogA0E4ahCZgICAACADKAIQIQEgAygCFCIIDQEMAgsLIAYNACACQQE6AAALIAAgAykDGDcAACAAIAs2AiAgAEEoaiAHNgIAIABBJGogBTYCACAAQRhqIA0pAwA3AAAgAEEQaiAOKQMANwAAIABBCGogDykDADcAACADQZABaiSAgICAAAv+DAEMfyOAgICAAEGAAWsiAySAgICAACABKAIAIQQgASgCBCIFLwGOAiEGIANBKGpBCGoiByAFQQRqIgggASgCCCIJQQxsIgFqIgpBCGooAgA2AgAgAyAKKQIANwMoIAogCCABQQxqIgtqIAYgCUF/c2pBDGwiCBDBkYCAABogA0EQakEIaiIMIAVBiAFqIgogAWoiAUEIaigCADYCACADIAEpAgA3AxAgASAKIAtqIAgQwZGAgAAaIAUgBkF/aiIBOwGOAiADQdgAakEIaiIGIAcoAgA2AgAgA0HsAGogDCgCADYCACADIAMpAxA3AmQgA0E4akEIaiIKIAYpAwA3AwAgA0E4akEQaiIGIANB2ABqQRBqKQMANwMAIAMgAykDKDcDOCADQRBqQRBqIg0gBikDADcDACAMIAopAwA3AwAgAyADKQM4NwMQAkAgAUH//wNxQQVPDQACQAJAAkAgBSgCACIGRQ0AIARBAWohCgJAIAVBjAJqLwEAIgcNAAJAIAYvAY4CDQAgA0E4akEUakEBNgIAIANB2ABqQRRqQQA2AgAgA0IBNwI8IANBiILAgAA2AjggA0GBgICAADYCLCADQYCAwIAANgJoIANCATcCXCADQaSCwIAANgJYIAMgA0EoajYCSCADIANB2ABqNgIoIANBOGpBrILAgAAQtpCAgAAACwJAIAFB//8DcSAGQZQCaigCACIBLwGOAmpBAWpBDEkNACADIAE2AnAgAyAENgJsIAMgBTYCaCADIAQ2AmQgA0EANgJgIAMgBjYCXCADIAo2AlggA0HYAGpBARCXgICAAAwCCyADIAE2AnAgAyAENgJsIAMgBTYCaCADIAQ2AmQgA0EANgJgIAMgBjYCXCADIAo2AlggA0EoaiADQdgAakEAIAkQm4CAgAAMAwsCQCABQf//A3EgBiAHQX9qIgFBAnRqQZACaigCACIHLwGOAmpBAWpBDEkNACADIAU2AnAgAyAENgJsIAMgBzYCaCADIAQ2AmQgAyABNgJgIAMgBjYCXCADIAo2AlggA0HYAGpBARCWgICAACADIAlBAWo2AjAMAgsgAyAFNgJwIAMgBDYCbCADIAc2AmggAyAENgJkIAMgATYCYCADIAY2AlwgAyAKNgJYIANBKGogA0HYAGpBASAJEJuAgIAADAILIAMgCTYCMAsgAyAFNgIsIAMgBDYCKAsgAygCMCEJIAMoAighBCADKAIsIgUoAgAiAUUNACAEQQFqIQYDQCABLwGOAiIHQQRLDQECQCABKAIAIgpFDQAgBkEBaiEIAkAgAUGMAmovAQAiCw0AAkAgCi8BjgINACADQThqQRRqQQE2AgAgA0HYAGpBFGpBADYCACADQgE3AjwgA0GIgsCAADYCOCADQYGAgIAANgJ8IANBgIDAgAA2AmggA0IBNwJcIANBpILAgAA2AlggAyADQfgAajYCSCADIANB2ABqNgJ4IANBOGpBrILAgAAQtpCAgAAACyADIApBlAJqKAIAIgs2AlAgAyAGNgJMIAMgATYCSCADIAY2AkQgA0EANgJAIAMgCjYCPCADIAg2AjgCQCAHIAsvAY4CakEBakEMSQ0AIANBOGpBBSAHaxCXgICAAEEAIQFBAA0DDAQLIANB2ABqQRhqIANBOGpBGGooAgA2AgAgA0HYAGpBEGogA0E4akEQaikDADcDACADQdgAakEIaiADQThqQQhqKQMANwMAIAMgAykDODcDWCADIANB2ABqEJqAgIAAIAMoAgAhBiADKAIEIgENAgwDCyAKIAtBf2oiDkECdGpBkAJqKAIAIQsgAyABNgJQIAMgBjYCTCADIAs2AkggAyAGNgJEIAMgDjYCQCADIAo2AjwgAyAINgI4AkAgByALLwGOAmpBAWpBDEkNACADQThqQQUgB2sQloCAgABBACEBQQANAgwDCyADQdgAakEYaiADQThqQRhqKAIANgIAIANB2ABqQRBqIANBOGpBEGopAwA3AwAgA0HYAGpBCGogA0E4akEIaikDADcDACADIAMpAzg3A1ggA0EIaiADQdgAahCagICAACADKAIIIQYgAygCDCIBDQEMAgsLIAcNACACQQE6AAALIAAgAykDEDcCACAAIAQ2AhggAEEgaiAJNgIAIABBHGogBTYCACAAQRBqIA0pAwA3AgAgAEEIaiAMKQMANwIAIANBgAFqJICAgIAAC94GAgd/AX4jgICAgABB0ABrIgMkgICAgAAgASgCCCEEIAEoAgQhBQJAAkAgASgCACIGDQAgAyAENgIgIAMgBTYCHCADQQA2AhggACADQRhqIAIQoYCAgAAMAQsgBSAEQQJ0akGQAmooAgAhAQJAIAZBf2oiBEUNACAGQX5qIQUCQCAEQQNxIgZFDQADQCAEQX9qIQQgASABLwGOAkECdGpBkAJqKAIAIQEgBkF/aiIGDQALCyAFQQNJDQADQCABIAEvAY4CQQJ0akGQAmooAgAiASABLwGOAkECdGpBkAJqKAIAIgEgAS8BjgJBAnRqQZACaigCACIBIAEvAY4CQQJ0akGQAmooAgAhASAEQXxqIgQNAAsLIAMgAS8BjgJBf2o2AgggAyABNgIEIANBADYCACADQRhqIAMgAhChgICAACADQRBqIANBGGpBEGopAwA3AwAgA0EIaiIFIANBGGpBCGoiBykDADcDACADIAMpAxg3AwAgAygCMCEGAkACQCADQThqKAIAIgIgA0E0aigCACIELwGOAk8NACAEIQEMAQsDQAJAIAQoAgAiAQ0AIAQhAQwCCyAGQQFqIQYgBEGMAmohAiABIQQgAi8BACICIAEvAY4CTw0ACwsgA0HAAGpBCGoiCCADQRRqKAIANgIAIAMgAykCDDcDQCAHIAEgAkEMbGoiBEEMaiIJKAIANgIAIAMgBEEEaiIHKQIANwMYIAMpAwAhCiAJIAUoAgA2AgAgByAKNwIAIANBGGpBFGogBEGQAWoiBSgCADYCACADIARBiAFqIgQpAgA3AiQgBSAIKAIANgIAIAQgAykDQDcCACACQQFqIQICQCAGRQ0AIAEgAkECdGpBkAJqKAIAIQFBACECIAZBf2oiBEUNACAGQX5qIQUCQCAEQQdxIgZFDQADQCAEQX9qIQQgASgCkAIhASAGQX9qIgYNAAsLIAVBB0kNAANAIAEoApACKAKQAigCkAIoApACKAKQAigCkAIoApACKAKQAiEBIARBeGoiBA0ACwsgACADKQMYNwIAIABBADYCGCAAQSBqIAI2AgAgAEEcaiABNgIAIABBEGogA0EYakEQaikDADcCACAAQQhqIANBGGpBCGopAwA3AgALIANB0ABqJICAgIAAC+UGAgp/A34jgICAgABB0ABrIgMkgICAgAAgASgCCCEEIAEoAgQhBQJAAkAgASgCACIGDQAgAyAENgIoIAMgBTYCJCADQQA2AiAgACADQSBqIAIQoICAgAAMAQsgBSAEQQJ0akHoAmooAgAhAQJAIAZBf2oiBEUNACAGQX5qIQUCQCAEQQNxIgZFDQADQCAEQX9qIQQgASABLwEGQQJ0akHoAmooAgAhASAGQX9qIgYNAAsLIAVBA0kNAANAIAEgAS8BBkECdGpB6AJqKAIAIgEgAS8BBkECdGpB6AJqKAIAIgEgAS8BBkECdGpB6AJqKAIAIgEgAS8BBkECdGpB6AJqKAIAIQEgBEF8aiIEDQALCyADIAEvAQZBf2o2AgggAyABNgIEIANBADYCACADQSBqIAMgAhCggICAACADQRhqIgUgA0EgakEYaiIHKQMANwMAIANBEGoiCCADQSBqQRBqIgkpAwA3AwAgA0EIaiIKIANBIGpBCGoiCykDADcDACADIAMpAyA3AwAgAygCQCEGAkACQCADQcgAaigCACICIANBxABqKAIAIgQvAQZPDQAgBCEBDAELA0ACQCAEKAIAIgENACAEIQEMAgsgBkEBaiEGIARBBGohAiABIQQgAi8BACICIAEvAQZPDQALCyAHIAEgAkEFdGoiBEEgaiIMKQAANwMAIAkgBEEYaiIHKQAANwMAIAsgBEEQaiIJKQAANwMAIAMgBEEIaiIEKQAANwMgIAopAwAhDSAIKQMAIQ4gBSkDACEPIAQgAykDADcAACAMIA83AAAgByAONwAAIAkgDTcAACACQQFqIQICQCAGRQ0AIAEgAkECdGpB6AJqKAIAIQFBACECIAZBf2oiBEUNACAGQX5qIQUCQCAEQQdxIgZFDQADQCAEQX9qIQQgASgC6AIhASAGQX9qIgYNAAsLIAVBB0kNAANAIAEoAugCKALoAigC6AIoAugCKALoAigC6AIo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BDYCGCADIAFBLGw2AhQgAyAAKAIANgIQDAELIANBADYCGAsgAyAEIAUgA0EQahCmgICAACADKAIEIQECQCADKAIADQAgACABNgIAIABBBGogAjYCAAwCCyADQQhqKAIAIgBBgYCAgHhGDQEgAEUNACABIAAQqJCAgAAACxCpkICAAAALIANBIGokgICAgAAL9gEBA38jgICAgABBIGsiAySAgICAAAJAAkAgASACaiICIAFJDQAgAEEEaigCACIBQQF0IgQgAiAEIAJLGyICQQQgAkEESxsiAkECdCEEIAJBgICAgAJJQQJ0IQUCQAJAIAFFDQAgA0EENgIYIAMgAUECdDYCFCADIAAoAgA2AhAMAQsgA0EANgIYCyADIAQgBSADQRBqEKaAgIAAIAMoAgQhAQJAIAMoAgANACAAIAE2AgAgAEEEaiACNgIADAILIANBCGooAgAiAEGBgICAeEYNASAARQ0AIAEgABCokICAAAALEKmQgIAAAAsgA0EgaiSAgICAAAv1AQEDfyOAgICAAEEgayIDJICAgIAAAkACQCABIAJqIgIgAUkNACAAQQRqKAIAIgFBAXQiBCACIAQgAksbIgJBBCACQQRLGyICQTBsIQQgAkGr1aoVSUEDdCEFAkACQCABRQ0AIANBCDYCGCADIAFBMGw2AhQgAyAAKAIANgIQDAELIANBADYCGAsgAyAEIAUgA0EQahCmgICAACADKAIEIQECQCADKAIADQAgACABNgIAIABBBGogAjYCAAwCCyADQQhqKAIAIgBBgYCAgHhGDQEgAEUNACABIAAQqJCAgAAACxCpkICAAAALIANBIGokgICAgAAL8gEBA38jgICAgABBIGsiAySAgICAAAJAAkAgASACaiICIAFJDQAgAEEEaigCACIBQQF0IgQgAiAEIAJLGyICQQQgAkEESxsiAkEFdCEEIAJBgICAIEkhBQJAAkAgAUUNACADQQE2AhggAyABQQV0NgIUIAMgACgCADYCEAwBCyADQQA2AhgLIAMgBCAFIANBEGoQpoCAgAAgAygCBCEBAkAgAygCAA0AIAAgATYCACAAQQRqIAI2AgAMAgsgA0EIaigCACIAQYGAgIB4Rg0BIABFDQAgASAAEKiQgIAAAAsQqZCAgAAACyADQSBqJICAgIAAC+gBAQJ/I4CAgIAAQSBrIgMkgICAgAACQAJAIAEgAmoiAiABSQ0AIABBBGooAgAiAUEBdCIEIAIgBCACSxsiAkEIIAJBCEsbIgJBf3NBH3YhBAJAAkAgAUUNACADQQE2AhggAyABNgIUIAMgACgCADYCEAwBCyADQQA2AhgLIAMgAiAEIANBEGoQpoCAgAAgAygCBCEBAkAgAygCAA0AIAAgATYCACAAQQRqIAI2AgAMAgsgA0EIaigCACIAQYGAgIB4Rg0BIABFDQAgASAAEKiQgIAAAAsQqZCAgAAACyADQSBqJICAgIAAC/UBAQN/I4CAgIAAQSBrIgMkgICAgAACQAJAIAEgAmoiAiABSQ0AIABBBGooAgAiAUEBdCIEIAIgBCACSxsiAkEEIAJBBEsbIgJBKGwhBCACQbTmzBlJQQN0IQUCQAJAIAFFDQAgA0EINgIYIAMgAUEobDYCFCADIAAoAgA2AhAMAQsgA0EANgIYCyADIAQgBSADQRBqEKaAgIAAIAMoAgQhAQJAIAMoAgANACAAIAE2AgAgAEEEaiACNgIADAILIANBCGooAgAiAEGBgICAeEYNASAARQ0AIAEgABCokICAAAALEKmQgIAAAAsgA0EgaiSAgICAAAv1AQEDfyOAgICAAEEgayIDJICAgIAAAkACQCABIAJqIgIgAUkNACAAQQRqKAIAIgFBAXQiBCACIAQgAksbIgJBBCACQQRLGyICQShsIQQgAkG05swZSUECdCEFAkACQCABRQ0AIANBBDYCGCADIAFBKGw2AhQgAyAAKAIANgIQDAELIANBADYCGAsgAyAEIAUgA0EQahCmgICAACADKAIEIQECQCADKAIADQAgACABNgIAIABBBGogAjYCAAwCCyADQQhqKAIAIgBBgYCAgHhGDQEgAEUNACABIAAQqJCAgAAACxCpkICAAAALIANBIGokgICAgAALJgEBfwJAIABBBGooAgAiAUUNACAAKAIAIAFBBXRBARC3hYCAAAsLIwEBfwJAIABBBGooAgAiAUUNACAAKAIAIAFBARC3hYCAAAsLJgEBfwJAIABBBGooAgAiAUUNACAAKAIAIAFBA3RBCBC3hYCAAAsLkgMCA38BfiOAgICAAEEgayIFJICAgIAAIAEoAgAiBigCCCEHAkAgAS0ABA0AAkAgByAGKAIERw0AIAYgBxCpgICAACAGKAIIIQcL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ETYCOCACIAs3AxggAiAHNwMQIAJBsAFqIAJBEGogAhCogYCAAAJAAkAgAigCsAENACACQQQ2AlBBASEBDAELIAJB0ABqIAIoArQBIAJBuAFqKAIAEOWMgIAAIAIoAlBBBEYhAQsCQCACKAIsIg5FDQAgAigCKCAOQQEQt4WAgAALAkAgAigCTCIORQ0AIA5BGGwhBSACKAJEQQhqIQ4DQAJAIA5BBGooAgAiEEUNACAOKAIAIBBBARC3hYCAAAsgDkEYaiEOIAVBaGoiBQ0ACwsCQCACKAJIIg5FDQAgAigCRCAOQRhsQQgQt4WAgAALAkACQCABRQ0AIAAgAikDADcCBCAAQQQ2AgAgAEEMaiACQQhqKAIANgIADAELIAIoAgQhDiACKAIAIQUgACACKQNQNwIAIABBEGogAkHQAGpBEGooAgA2AgAgAEEIaiACQdAAakEIaikDADcCACAORQ0AIAUgDkEBELeFgIAACyACQdABaiSAgICAAA8LQSBBARCokICAAAALIBMgFBCokICAAAALIA4gEBCokICAAAALQSBBARCokICAAAALEKmQgIAAAAsgCiASEKiQgIAAAAu1CgMCfwF+An8jgICAgABBMGsiAySAgICAACADQSBqIAJBiIrAgABBCEEEEP2GgIAAAkACQAJAIAMoAiANACADIAMoAiQiAjYCCCACKAIIIQQgA0EgakEIai0AAA0BAkAgBCACKAIERw0AIAIgBBCpgICAACACKAIIIQQLIAIoAgAgBGpBLDoAACACIAIoAghBAWoiBDYCCAwBCyAAIAMpAiQ3AgQgAEEBNgIAIABBDGogA0EgakEMaigCADYCAAwBCyADQQA6AAwCQCAEIAIoAgRHDQAgAiAEEKmAgIAAIAIoAgghBAsgAigCACAEakEiOgAAIAIgAigCCEEBaiIENgIIAkAgAigCBCAEa0EHSw0AIAIgBEEIELqAgIAAIAIoAgghBAsgAigCACAEakLtys2bl+zZsvMANwAAIAIgBEEIaiIENgIIAkAgAigCBCAEa0EBSw0AIAIgBEECELqAgIAAIAIoAgghBAsgAigCACAEakGi9AA7AAAgAiAEQQJqNgIIIANBIGogAiABELuDgIAAAkACQAJAAkAgAygCIA0AIANBIGogA0EIakGQisCAAEEKIAFBDGoQx4CAgAAgAygCIA0CIAMoAggiAigCCCEEIAMtAAxFDQEMAwsgA0EYaiADQSBqQQxqKAIAIgI2AgAgAyADKQIkIgU3AxAgAEEMaiACNgIAIAAgBTcCBCAAQQE2AgAMAwsCQCAEIAIoAgRHDQAgAiAEEKmAgIAAIAIoAgghBAsgAigCACAEakEsOgAAIAIgAigCCEEBaiIENgIIDAELIAAgAykCJDcCBCAAQQE2AgAgAEEMaiADQSBqQQxqKAIANgIADAELIANBADoADAJAIAQgAigCBEcNACACIAQQqYCAgAAgAigCCCEECyACKAIAIARqQSI6AAAgAiACKAIIQQFqIgQ2AggCQCACKAIEIARrQQVLDQAgAiAEQQYQuoCAgAAgAigCCCEECyABQRhqIQYgAigCACAEaiIHQQAoAJqKwIAANgAAIAdBBGpBAC8AnorAgAA7AAAgAiAEQQZqIgQ2AggCQCACKAIEIARrQQFLDQAgAiAEQQIQuoCAgAAgAigCCCEECyACKAIAIARqQaL0ADsAACACIARBAmo2AgggA0EgaiACIAYQvoOAgAACQCADKAIgDQACQCACKAIIIgQgAigCBEcNACACIAQQqYCAgAAgAigCCCEECyACKAIAIARqQSw6AAAgAiACKAIIQQFqIgQ2AgggA0EAOgAMAkAgBCACKAIERw0AIAIgBBCpgICAACACKAIIIQQLIAIoAgAgBGpBIjoAACACIAIoAghBAWoiBDYCCAJAIAIoAgQgBGtBA0sNACACIARBBBC6gICAACACKAIIIQQLIAFBJGohASACKAIAIARqQeTC0YsGNgAAIAIgBEEEaiIENgIIAkAgAigCBCAEa0EBSw0AIAIgBEECELqAgIAAIAIoAgghBAsgAigCACAEakGi9AA7AAAgAiAEQQJqNgIIAkACQCABKAIADQAgA0EgaiACEPqGgIAADAELIANBIGogAiABEMaDgIAACwJAIAMoAiANACAAIAJBABCTh4CAAAwCCyADQRhqIANBIGpBDGooAgAiAjYCACADIAMpAiQiBTcDECAAQQxqIAI2AgAgACAFNwIEIABBATYCAAwBCyADQRhqIANBIGpBDGooAgAiAjYCACADIAMpAiQiBTcDECAAQQxqIAI2AgAgACAFNwIEIABBATYCAAsgA0EwaiSAgICAAAuPAwIDfwF+I4CAgIAAQSBrIgUkgICAgAAgASgCACIGKAIIIQcCQCABLQAEDQACQCAHIAYoAgRHDQAgBiAHEKmAgIAAIAYoAgghBwsgBigCACAHakEsOgAAIAYgBigCCEEBaiIHNgIICyABQQA6AAQCQCAHIAYoAgRHDQAgBiAHEKmAgIAAIAYoAgghBwsgBigCACAHakEiOgAAIAYgBigCCEEBaiIHNgIIAkAgBigCBCAHayADTw0AIAYgByADELqAgIAAIAYoAgghBwsgBigCACAHaiACIAMQvJGAgAAaIAYgByADaiIHNgIIAkAgBigCBCAHa0EBSw0AIAYgB0ECELqAgIAAIAYoAgghBwsgBigCACAHakGi9AA7AAAgBiAHQQJqNgIIIAVBEGogBiAEELyDgIAAAkACQCAFKAIQDQAgAEEANgIADAELIAVBCGogBUEQakEMaigCACIGNgIAIAUgBSkCFCIINwMAIABBDGogBjYCACAAIAg3AgQgAEEBNgIACyAFQSBqJICAgIAAC4gcAwt/A34EfyOAgICAAEGQAmsiBCSAgICAACAEIAE2AgQCQAJAAkACQCACKAIARQ0AIAJBJGooAgAhBSAEQTBqQRhqIgYgAkEcaikAADcDACAEQTBqQRBqIgcgAkEUaikAADcDACAEQTBqQQhqIgggAkEMaikAADcDACAEIAIpAAQ3AzAgBEHYAGogBEEwahDDjoCAACAEQdABaiABIARB2ABqIAUQyYCAgAACQCAEKALQASIJDQAgBEHwAWpBGGogBikDADcDACAEQfABakEQaiAHKQMANwMAIARB8AFqQQhqIAgpAwA3AwAgBCAEKQMwNwPwAUEAIQUMAwsCQCAEKALYASIKRQ0AAkACQCABKAIEIgtFDQAgASgCACEMA0AgC0FgaiENIAtBwANqIQYgCy8BvgMiDkEFdCEFQX8hCAJAA0ACQCAFDQAgDiEIDAILIAkgBkEgELqRgIAAIQcgCEEBaiEIIA1BKGohDSAFQWBqIQUgBkEgaiEGQX8gB0EARyAHQQBIGyIHQQFGDQALIAdB/wFxRQ0DCyAMRQ0BIAxBf2ohDCALIAhBAnRqQaAGaigCACELDAALC0HEjcCAAEE1QfyNwIAAEMuQgIAAAAsgDUEIaigCACIFRQ0CIARB2ABqQQFyIAVBBXQgDSgCAGpBYGoQw46AgAAgBEGIAmogBEHxAGopAAA3AwAgBEGAAmogBEHpAGopAAA3AwAgBEHwAWpBCGogBEHhAGopAAA3AwAgBCAEKQBZNwPwAQsCQCAEKALUASIFRQ0AIAkgBUEFdEEBELeFgIAAC0EBIQUgCg0CCyAEQdgAaiABQRxqEMOOgIAAQQAhBQwCC0H1jMCAAEE8QbSNwIAAEMuQgIAAAAsgBEHYAGpBGGogBEHwAWpBGGopAwA3AwAgBEHYAGpBEGogBEHwAWpBEGopAwA3AwAgBEHYAGpBCGogBEHwAWpBCGopAwA3AwAgBCAEKQPwATcDWAsgBEEIakEYaiAEQdgAakEYaikDADcDACAEQQhqQRBqIARB2ABqQRBqKQMANwMAIARBCGpBCGogBEHYAGpBCGopAwA3AwAgBCAEKQNYNwMIIAQgBToALwJAAkAgBCgCBCIFKAIEIglFDQAgBSgCACELA0AgCUFcaiEIIAlBwANqIQYgCS8BvgMiDEEFdCEFQX8hDQJAA0ACQCAFDQAgDCENDAILIARBCGogBkEgELqRgIAAIQcgDUEBaiENIAhBKGohCCAFQWBqIQUgBkEgaiEGQX8gB0EARyAHQQBIGyIHQQFGDQALIAdB/wFxRQ0DCyALRQ0BIAtBf2ohCyAJIA1BAnRqQaAGaigCACEJDAALC0HEjcCAAEE1QfyNwIAAEMuQgIAAAAsgAygCICAIQRxqQQEQloKAgAAhDyADKQMAIA8Qg46AgAAhECADKQMIIREgBCAPIAMpAxAQgY6AgAAgECARIBAgEVQbEIGOgIAANwNYAkACQAJAAkAgBEHYAGogA0EYahCEjoCAAEH/AXFBAUsNACAIQRhqKAIAIQYgCEEQaigCACEFIARBMGpBEGogAjYCACAEIAU2AjAgBCAFIAZBBXRqNgI0IAQgBEEvajYCPCAEIARBBGo2AjggBEHYAGogBEEwaiAEQTxqIg0gAxCXgoCAAAJAIAQoAngiBUUNAANAIARBCGpBGGogBEHYAGpBGGopAwA3AwAgBEEIakEQaiAEQdgAakEQaikDADcDACAEQQhqQQhqIARB2ABqQQhqKQMANwMAIAQgBCkDWDcDCCAEQQA6AC8gBUEYaigCACEHIAVBEGooAgAhBiAEIAI2AkAgBCAGNgIwIAQgBiAHQQV0ajYCNCAEIARBL2o2AjwgBCAEQQRqNgI4IARB2ABqIARBMGogDSADEJeCgIAAIAUhCCAEKAJ4IgYhBSAGDQALCyAELQAvDQEgBEEANgIwDAILIABBADYCAAwCCyAEQTBqQSBqIAJBIGopAgA3AwAgBEEwakEYaiACQRhqKQIANwMAIARBMGpBEGogAkEQaikCADcDACAEQTBqQQhqIAJBCGopAgA3AwAgBCACKQIANwMwCyAEQdgAakEgaiADQSBqKQMANwMAIARB2ABqQRhqIANBGGopAwA3AwAgBEHYAGpBEGogA0EQaikDADcDACAEQdgAakEIaiADQQhqKQMANwMAIAQgAykDADcDWCAIQRhqKAIAIQYgCCgCECEFIAQgATYC+AEgBCAFNgLwASAEIAUgBkEFdGo2AvQBIAQgBEEwajYC/AEgBEGAAWogBEHwAWoQjoOAgAAgBCAIKAIAIhI2AowBAkACQAJAAkACQAJAAkAgBCgCiAEiBQ0AQQQhDQwBCyAFQa70ohdLDQEgBUEsbCIGQQBIDQEgBUGv9KIXSUECdCEHAkACQCAGDQAgByENDAELIAYgBxC2hYCAACENCyANRQ0DCyAEQQA2ApgBIAQgBTYClAEgBCANNgKQAUEBIQJBIEEBELaFgIAAIgNFDQEgAyAEKQMINwAAIANBGGogBEEIakEYaikDADcAACADQRBqIARBCGpBEGopAwA3AAAgA0EIaiAEQQhqQQhqKQMANwAAIARCgYCAgBA3AqQBIAQgAzYCoAEgBUUNAyAEQdgAakEYaiETIAQoAoABIgkgBUECdGohDEEBIRQDQCAUIBJqIgFBf3MhFUEAIQ4DQAJAIAkoAgAiCygCACIFIAFNDQAgBSAVaiIFIAtBDGooAgBPDQAgC0EEaigCACAFQQV0aiEDQQAhCkEAIQUCQAJAAkACQAJAIA5FDQBBACEFIA4hByAOIQYDQAJAAkBBfyANIAdBAXYgBWoiCEEsbGoiAiADQSAQupGAgAAiB0EARyAHQQBIGyIHQQFHDQAgCCEGDAELIAdB/wFxQf8BRw0DIAhBAWohBQsgBiAFayEHIAYgBUsNAAsLIARB8AFqIAMQw46AgAAgCSgCACIGQRxqKAIAIQgCQAJAIAZBJGooAgAiBw0AQQghBgwBCyAHQf////8ASw0IIAdBA3QiCkEASA0IIAdBgICAgAFJQQN0IQ0CQAJAIAoNACANIQYMAQsgCiANELaFgIAAIQYLIAZFDQILIAYgCCAKELyRgIAAIQMgBEHQAWpBGGoiAiAEQfABakEYaikDADcDACAEQdABakEQaiILIARB8AFqQRBqKQMANwMAIARB0AFqQQhqIg4gBEHwAWpBCGopAwA3AwAgBCAEKQPwATcD0AEgBCgClAEgBCgCmAEiCEYNAgwDCyACQSBqIgUgC0EcahCTjoCAACAEKAJ4IAVBARCWgoCAACEPIAQpA1ggDxCDjoCAACEQIAQpA2AhESAEIA8gBCkDaBCBjoCAACAQIBEgECARVBsQgY6AgAA3A/ABIARB8AFqIBMQhI6AgABB/wFxQQFLDQMgBEGwAWogAxDDjoCAACAEQdABakEYaiIDIARBsAFqQRhqKQAANwMAIARB0AFqQRBqIgIgBEGwAWpBEGopAAA3AwAgBEHQAWpBCGoiCSAEQbABakEIaikAADcDAEEAIQUgBEEANgKYASAEIAQpALABNwPQASAEIAQoAowBQQFqNgKMASAOQSxsIQgDQAJAIA0gBWoiBkEkaigCACIHRQ0AIAZBIGooAgAgB0EDdEEIELeFgIAACyAIIAVBLGoiBUcNAAsgBEGAAWogBEHQAWogBEGMAWoQ+IKAgAAgBEHwAWpBGGoiByADKQMANwMAIARB8AFqQRBqIgggAikDADcDACAEQfABakEIaiICIAkpAwA3AwAgBCAEKQPQATcD8AECQCAEKAKoASIGIAQoAqQBRw0AIARBoAFqIAYQtICAgAAgBCgCqAEhBgsgBCgCoAEiAyAGQQV0aiIFIAQpA/ABNwAAIAVBCGogAikDADcAACAFQRBqIAgpAwA3AAAgBUEYaiAHKQMANwAAIAQgBkEBaiICNgKoASAUQQFqIRQgBCgCgAEiCSAEKAKIASIFQQJ0aiEMIAUNBQwJCyAKIA0QqJCAgAAACyAEQZABaiAIQQEQtoCAgAALIAQoApABIg0gBUEsbGohBgJAAkAgCCAFSw0AIAggBUYNASAFIAgQsJCAgAAACyAGQSxqIAYgCCAFa0EsbBDBkYCAABoLIAYgBCkD0AE3AgAgBiAHNgIoIAYgBzYCJCAGIAM2AiAgBkEYaiACKQMANwIAIAZBEGogCykDADcCACAGQQhqIA4pAwA3AgAgBCAIQQFqIg42ApgBCyAJQQRqIgkgDEcNAAsLIAQoAqgBIQIgBCgCoAEhAyAEKAKkASEJIAQoAowBIQsgDkUNBCAOQSxsIQhBACEFA0ACQCANIAVqIgZBJGooAgAiB0UNACAGQSBqKAIAIAdBA3RBCBC3hYCAAAsgCCAFQSxqIgVHDQAMBQsLEKmQgIAAAAtBIEEBEKiQgIAAAAsgBiAHEKiQgIAAAAsgBCgCpAEhCSAEKAKMASELCwJAIAQoApQBIgVFDQAgDSAFQSxsQQQQt4WAgAALAkAgBCgChAEiBUUNACAEKAKAASAFQQJ0QQQQt4WAgAALAkACQCACDQAgAEEANgIADAELIARB2ABqIAJBBXQgA2pBYGoQw46AgAAgAEEkaiALNgIAIABBATYCACAAIAQpA1g3AgQgAEEMaiAEQeAAaikDADcCACAAQRRqIARB6ABqKQMANwIAIABBHGogBEHwAGopAwA3AgALIAlFDQAgAyAJQQV0QQEQt4WAgAALIARBkAJqJICAgIAAC+IJARB/I4CAgIAAQfABayIEJICAgIAAAkACQAJAAkACQAJAIAEoAgQiBUUNACABKAIAIQYgBSEHA0AgB0HAA2ohCCAHLwG+AyIJQQV0IQpBfyELAkADQAJAIAoNACAJIQsMAgsgAiAIQSAQupGAgAAhDCALQQFqIQsgCkFgaiEKIAhBIGohCEF/IAxBAEcgDEEASBsiDEEBRg0ACyAMQf8BcUUNAwsgBkUNASAGQX9qIQYgByALQQJ0akGgBmooAgAhBwwACwsgBEEANgIgIARCATcDGCAEQgA3AiwgAUEUaigCACEKIAEoAgwhDCAEIAFBEGooAgAiCDYCUCAEIAw2AkwgBCAINgJAIAQgDDYCPCAEIAhFQQF0Igw2AkggBCAMNgI4IAhFDQIgCkUNAiAEQeAAakEBciENIAVFDQEgA0F/cyEOIARByAFqQQFyIQkgASgCACEPA0AgBCAKQX9qNgJYIARBOGoQ/4SAgAAiCkUNBSAEQRBqIAoQpYCAgAAgBCgCECIKRQ0DIA0gChDDjoCAACAEQQE6AGAgBEGIAWpBGGoiECANQRhqKQAANwMAIARBiAFqQRBqIhEgDUEQaikAADcDACAEQYgBakEIaiISIA1BCGopAAA3AwAgBCANKQAANwOIAQNAIAUhBiAPIQECQANAIAZBXGohByAGQcADaiEIIAYvAb4DIhNBBXQhCkF/IQsCQAJAA0ACQCAKDQAgEyELDAILIARBiAFqIAhBIBC6kYCAACEMIAtBAWohCyAHQShqIQcgCkFgaiEKIAhBIGohCEF/IAxBAEcgDEEASBsiDEEBRg0ACyAMQf8BcUUNAQsgAUUNAiABQX9qIQEgBiALQQJ0akGgBmooAgAhBgwBCwsgBEGoAWogBEGIAWoQw46AgAAgBEHIAWpBGGoiCCAEQagBakEYaikDADcDACAEQcgBakEQaiIMIARBqAFqQRBqKQMANwMAIARByAFqQQhqIgsgBEGoAWpBCGopAwA3AwAgBCAEKQOoATcDyAEgBEEoaiAEQcgBahDEhICAAA0AAkACQCAHKAIAIgogA0sNACAHQQxqKAIAIQoMAQsgCiAOaiIGIAdBDGooAgAiCk8NACAHQQRqKAIAIAZBBXRqIAJBIBC6kYCAAA0BIARByAFqIARBiAFqEMOOgIAAAkAgBCgCICIKIAQoAhxHDQAgBEEYaiAKELSAgIAAIAQoAiAhCgsgBCgCGCAKQQV0aiIHIAQpA8gBNwAAIAdBCGogCykDADcAACAHQRBqIAwpAwA3AAAgB0EYaiAIKQMANwAAIAQgCkEBajYCIAwBCyAKRQ0AIAkgCkEFdCAHQQRqKAIAakFgahDDjoCAACAQIAlBGGopAAA3AwAgESAJQRBqKQAANwMAIBIgCUEIaikAADcDACAEIAkpAAA3A4gBDAELCyAEKAJYIgoNAAwDCwsgAEEANgIADAILA0AgBCAKQX9qNgJYIARBOGoQ/4SAgAAiCkUNAyAEQQhqIAoQpYCAgAAgBCgCCCIKRQ0BIA0gChDDjoCAACAEKAJYIgoNAAsLIAAgBCkDGDcCACAAQQhqIARBGGpBCGooAgA2AgAgBEEoahDQhICAAAsgBEHwAWokgICAgAAPC0GIicGAAEErQaSKwYAAELuQgIAAAAvAGgEPfyOAgICAAEHwAWsiBSSAgICAACAFIAQ2AgQgBSADNgIAIAUgATYCDAJAAkACQAJAIAIoAgBFDQAgAkEkaigCACEEIAVB0AFqQRhqIgMgAkEcaikAADcDACAFQdABakEQaiIGIAJBFGopAAA3AwAgBUHQAWpBCGoiByACQQxqKQAANwMAIAUgAikABDcD0AEgBUE4aiAFQdABahDDjoCAACAFQZABaiABIAVBOGogBBDJgICAAAJAIAUoApABIggNACAFQbABakEYaiADKQMANwMAIAVBsAFqQRBqIAYpAwA3AwAgBUGwAWpBCGogBykDADcDACAFIAUpA9ABNwOwAUEAIQQMAwsCQCAFKAKYASIJRQ0AAkACQCABKAIEIgpFDQAgASgCACELA0AgCkFgaiEMIApBwANqIQMgCi8BvgMiDUEFdCEEQX8hBwJAA0ACQCAEDQAgDSEHDAILIAggA0EgELqRgIAAIQYgB0EBaiEHIAxBKGohDCAEQWBqIQQgA0EgaiEDQX8gBkEARyAGQQBIGyIGQQFGDQALIAZB/wFxRQ0DCyALRQ0BIAtBf2ohCyAKIAdBAnRqQaAGaigCACEKDAALC0HEjcCAAEE1QfyNwIAAEMuQgIAAAAsgDEEIaigCACIERQ0CIAVBOGpBAXIgBEEFdCAMKAIAakFgahDDjoCAACAFQcgBaiAFQdEAaikAADcDACAFQcABaiAFQckAaikAADcDACAFQbABakEIaiAFQcEAaikAADcDACAFIAUpADk3A7ABCwJAIAUoApQBIgRFDQAgCCAEQQV0QQEQt4WAgAALQQEhBCAJDQILIAVBOGogAUEcahDDjoCAAEEAIQQMAgtB9YzAgABBPEG0jcCAABDLkICAAAALIAVBOGpBGGogBUGwAWpBGGopAwA3AwAgBUE4akEQaiAFQbABakEQaikDADcDACAFQThqQQhqIAVBsAFqQQhqKQMANwMAIAUgBSkDsAE3AzgLIAVBEGpBGGogBUE4akEYaikDADcDACAFQRBqQRBqIAVBOGpBEGopAwA3AwAgBUEQakEIaiAFQThqQQhqKQMANwMAIAUgBSkDODcDECAFIAQ6ADcCQAJAIAUoAgwiBCgCBCIIRQ0AIAQoAgAhCgNAIAhBXGohByAIQcADaiEDIAgvAb4DIgtBBXQhBEF/IQwCQANAAkAgBA0AIAshDAwCCyAFQRBqIANBIBC6kYCAACEGIAxBAWohDCAHQShqIQcgBEFgaiEEIANBIGohA0F/IAZBAEcgBkEASBsiBkEBRg0ACyAGQf8BcUUNAwsgCkUNASAKQX9qIQogCCAMQQJ0akGgBmooAgAhCAwACwtBxI3AgABBNUH8jcCAABDLkICAAAALIAUoAgQhBCAFIAUoAgAgB0EcakEBEJaCgIAANwM4AkACQAJAAkAgBUE4aiAEEISOgIAAQf8BcUEBSw0AIAdBGGooAgAhAyAHQRBqKAIAIQQgBUHQAWpBEGogAjYCACAFIAQ2AtABIAUgBCADQQV0ajYC1AEgBSAFQTdqNgLcASAFIAVBDGo2AtgBIAVBOGogBUHQAWogBUHcAWoiDCAFEJWCgIAAAkAgBSgCWCIERQ0AA0AgBUEQakEYaiAFQThqQRhqKQMANwMAIAVBEGpBEGogBUE4akEQaikDADcDACAFQRBqQQhqIAVBOGpBCGopAwA3AwAgBSAFKQM4NwMQIAVBADoANyAEQRhqKAIAIQYgBEEQaigCACEDIAUgAjYC4AEgBSADNgLQASAFIAMgBkEFdGo2AtQBIAUgBUE3ajYC3AEgBSAFQQxqNgLYASAFQThqIAVB0AFqIAwgBRCVgoCAACAEIQcgBSgCWCIDIQQgAw0ACwsgBS0ANw0BIAVBADYCOAwCCyAAQQA2AgAMAgsgBUE4akEgaiACQSBqKQIANwMAIAVBOGpBGGogAkEYaikCADcDACAFQThqQRBqIAJBEGopAgA3AwAgBUE4akEIaiACQQhqKQIANwMAIAUgAikCADcDOAsgBSgCBCEOIAUoAgAhDyAHQRhqKAIAIQMgBygCECEEIAUgATYC2AEgBSAENgLQASAFIAQgA0EFdGo2AtQBIAUgBUE4ajYC3AEgBUHgAGogBUHQAWoQj4OAgAAgBSAHKAIAIhA2AmwCQAJAAkACQAJAAkACQCAFKAJoIgQNAEEEIQwMAQsgBEGu9KIXSw0BIARBLGwiA0EASA0BIARBr/SiF0lBAnQhBgJAAkAgAw0AIAYhDAwBCyADIAYQtoWAgAAhDAsgDEUNAwsgBUEANgJ4IAUgBDYCdCAFIAw2AnBBASEIQSBBARC2hYCAACICRQ0BIAIgBSkDEDcAACACQRhqIAVBEGpBGGopAwA3AAAgAkEQaiAFQRBqQRBqKQMANwAAIAJBCGogBUEQakEIaikDADcAACAFQoGAgIAQNwKEASAFIAI2AoABIARFDQMgBSgCYCIKIARBAnRqIQ1BASERA0AgESAQaiILQX9zIRJBACEJA0ACQCAKKAIAIgEoAgAiBCALTQ0AIAQgEmoiBCABQQxqKAIATw0AIAFBBGooAgAgBEEFdGohAkEAIRNBACEEAkACQAJAAkACQCAJRQ0AQQAhBCAJIQYgCSEDA0ACQAJAQX8gDCAGQQF2IARqIgdBLGxqIgggAkEgELqRgIAAIgZBAEcgBkEASBsiBkEBRw0AIAchAwwBCyAGQf8BcUH/AUcNAyAHQQFqIQQLIAMgBGshBiADIARLDQALCyAFQdABaiACEMOOgIAAIAooAgAiA0EcaigCACEHAkACQCADQSRqKAIAIgYNAEEIIQMMAQsgBkH/////AEsNCCAGQQN0IhNBAEgNCCAGQYCAgIABSUEDdCEMAkACQCATDQAgDCEDDAELIBMgDBC2hYCAACEDCyADRQ0CCyADIAcgExC8kYCAACECIAVBsAFqQRhqIgggBUHQAWpBGGopAwA3AwAgBUGwAWpBEGoiASAFQdABakEQaikDADcDACAFQbABakEIaiIJIAVB0AFqQQhqKQMANwMAIAUgBSkD0AE3A7ABIAUoAnQgBSgCeCIHRg0CDAMLIAhBIGoiBCABQRxqEJOOgIAAIAUgDyAEQQEQloKAgAA3A9ABIAVB0AFqIA4QhI6AgABB/wFxQQFLDQMgBUGQAWogAhDDjoCAACAFQbABakEYaiICIAVBkAFqQRhqKQAANwMAIAVBsAFqQRBqIgggBUGQAWpBEGopAAA3AwAgBUGwAWpBCGoiCiAFQZABakEIaikAADcDAEEAIQQgBUEANgJ4IAUgBSkAkAE3A7ABIAUgBSgCbEEBajYCbCAJQSxsIQcDQAJAIAwgBGoiA0EkaigCACIGRQ0AIANBIGooAgAgBkEDdEEIELeFgIAACyAHIARBLGoiBEcNAAsgBUHgAGogBUGwAWogBUHsAGoQ+IKAgAAgBUHQAWpBGGoiBiACKQMANwMAIAVB0AFqQRBqIgcgCCkDADcDACAFQdABakEIaiIIIAopAwA3AwAgBSAFKQOwATcD0AECQCAFKAKIASIDIAUoAoQBRw0AIAVBgAFqIAMQtICAgAAgBSgCiAEhAwsgBSgCgAEiAiADQQV0aiIEIAUpA9ABNwAAIARBCGogCCkDADcAACAEQRBqIAcpAwA3AAAgBEEYaiAGKQMANwAAIAUgA0EBaiIINgKIASARQQFqIREgBSgCYCIKIAUoAmgiBEECdGohDSAEDQUMCQsgEyAMEKiQgIAAAAsgBUHwAGogB0EBELaAgIAACyAFKAJwIgwgBEEsbGohAwJAAkAgByAESw0AIAcgBEYNASAEIAcQsJCAgAAACyADQSxqIAMgByAEa0EsbBDBkYCAABoLIAMgBSkDsAE3AgAgAyAGNgIoIAMgBjYCJCADIAI2AiAgA0EYaiAIKQMANwIAIANBEGogASkDADcCACADQQhqIAkpAwA3AgAgBSAHQQFqIgk2AngLIApBBGoiCiANRw0ACwsgBSgCiAEhCCAFKAKAASECIAUoAoQBIQogBSgCbCEBIAlFDQQgCUEsbCEHQQAhBANAAkAgDCAEaiIDQSRqKAIAIgZFDQAgA0EgaigCACAGQQN0QQgQt4WAgAALIAcgBEEsaiIERw0ADAULCxCpkICAAAALQSBBARCokICAAAALIAMgBhCokICAAAALIAUoAoQBIQogBSgCbCEBCwJAIAUoAnQiBEUNACAMIARBLGxBBBC3hYCAAAsCQCAFKAJkIgRFDQAgBSgCYCAEQQJ0QQQQt4WAgAALAkACQCAIDQAgAEEANgIADAELIAVBOGogCEEFdCACakFgahDDjoCAACAAQSRqIAE2AgAgAEEBNgIAIAAgBSkDODcCBCAAQQxqIAVBwABqKQMANwIAIABBFGogBUHIAGopAwA3AgAgAEEcaiAFQdAAaikDADcCAAsgCkUNACACIApBBXRBARC3hYCAAAsgBUHwAWokgICAgAAL7gsCEH8DfiOAgICAAEHAAGsiBSSAgICAACAEQRhqIQYgASgCACEHIAEoAgQhCAJAAkACQAJAA0AgBUEgaiACEMOOgIAAIAUgASAFQSBqIAMQyYCAgAACQAJAAkAgBSgCACIJDQAgCEUNASAIIQogByELA0AgCkFcaiEMIApBwANqIQ0gCi8BvgMiDkEFdCEPQX8hEAJAA0ACQCAPDQAgDiEQDAILIAIgDUEgELqRgIAAIREgEEEBaiEQIAxBKGohDCAPQWBqIQ8gDUEgaiENQX8gEUEARyARQQBIGyIRQQFGDQALIBFB/wFxRQ0ECyALRQ0CIAtBf2ohCyAKIBBBAnRqQaAGaigCACEKDAALCyAFKAIEIRIgBSgCCCIPRQ0EIAVBEGoQko6AgAAgCEUNAyAJIA9BBXRqIRMgCSEKA0AgCCELIAchDgNAIAtBeGohECALQcADaiENIAsvAb4DIhRBBXQhD0F/IQwCQAJAA0ACQCAPDQAgFCEMDAILIAogDUEgELqRgIAAIREgDEEBaiEMIBBBKGohECAPQWBqIQ8gDUEgaiENQX8gEUEARyARQQBIGyIRQQFGDQALIBFB/wFxRQ0BCyAORQ0GIA5Bf2ohDiALIAxBAnRqQaAGaigCACELDAELCyAFQRBqIBAQk46AgAAgCkEgaiIKIBNHDQALIAQoAiAgBUEQakEBEJaCgIAAIRUgBCkDACAVEIOOgIAAIRYgBCkDCCEXIAUgFSAEKQMQEIGOgIAAIBYgFyAWIBdUGxCBjoCAADcDIAJAIAVBIGogBhCEjoCAAEH/AXFBAk8NACAAQQE2AgAgACACKQAANwAEIABBJGogAzYCACAAQRxqIAJBGGopAAA3AAAgAEEUaiACQRBqKQAANwAAIABBDGogAkEIaikAADcAACAFKAIUIg9FDQYgBSgCECAPQQN0QQgQt4WAgAAMBgsgE0FgaiEKIAghCyAHIQ4CQANAIAtBXGohECALQcADaiENIAsvAb4DIhRBBXQhD0F/IQwCQANAAkAgDw0AIBQhDAwCCyAKIA1BIBC6kYCAACERIAxBAWohDCAQQShqIRAgD0FgaiEPIA1BIGohDUF/IBFBAEcgEUEASBsiEUEBRg0ACyARQf8BcUUNAgsCQCAORQ0AIA5Bf2ohDiALIAxBAnRqQaAGaigCACELDAELC0GMjsCAAEEaQbiOwIAAEMuQgIAAAAsCQCAQKAIAIANrIg8gEEEMaigCAEkNACAAQQA2AgAgBSgCFCIPRQ0GIAUoAhAgD0EDdEEIELeFgIAADAYLIAVBIGogEEEEaigCACAPQQV0ahDDjoCAACACQRhqIAVBIGpBGGopAwA3AAAgAkEQaiAFQSBqQRBqKQMANwAAIAJBCGogBUEgakEIaikDADcAACACIAUpAyA3AAACQCAFKAIUIg9FDQAgBSgCECAPQQN0QQgQt4WAgAALAkAgEkUNACAJIBJBBXRBARC3hYCAAAsgA0F/aiEDDAILQciOwIAAQSVB8I7AgAAQy5CAgAAACyAEKAIgIAxBHGpBARCWgoCAACEVIAQpAwAgFRCDjoCAACEWIAQpAwghFyAFIBUgBCkDEBCBjoCAACAWIBcgFiAXVBsQgY6AgAA3AyACQCAFQSBqIAYQhI6AgABB/wFxQQJJDQACQCAMQQxqKAIADQAgAEEANgIADAYLIAVBIGogDEEEaigCABDDjoCAACACQRhqIAVBIGpBGGopAwA3AAAgAkEQaiAFQSBqQRBqKQMANwAAIAJBCGogBUEgakEIaikDADcAACACIAUpAyA3AAAgDCgCAEF/aiEDDAELCyAAQQE2AgAgACACKQAANwAEIABBJGogAzYCACAAQRxqIAJBGGopAAA3AAAgAEEUaiACQRBqKQAANwAAIABBDGogAkEIaikAADcAAAwDC0GMjsCAAEEaQaiOwIAAEMuQgIAAAAsgAEEANgIACyASRQ0AIAkgEkEFdEEBELeFgIAACyAFQcAAaiSAgICAAAv1CgEPfyOAgICAAEHAAGsiBiSAgICAACABKAIAIQcgASgCBCEIAkACQAJAAkADQCAGQSBqIAIQw46AgAAgBiABIAZBIGogAxDJgICAAAJAAkACQCAGKAIAIgkNACAIRQ0BIAghCiAHIQsDQCAKQVxqIQwgCkHAA2ohDSAKLwG+AyIOQQV0IQ9BfyEQAkADQAJAIA8NACAOIRAMAgsgAiANQSAQupGAgAAhESAQQQFqIRAgDEEoaiEMIA9BYGohDyANQSBqIQ1BfyARQQBHIBFBAEgbIhFBAUYNAAsgEUH/AXFFDQQLIAtFDQIgC0F/aiELIAogEEECdGpBoAZqKAIAIQoMAAsLIAYoAgQhEiAGKAIIIg9FDQQgBkEQahCSjoCAACAIRQ0DIAkgD0EFdGohEyAJIQoDQCAIIQsgByEOA0AgC0F4aiEQIAtBwANqIQ0gCy8BvgMiFEEFdCEPQX8hDAJAAkADQAJAIA8NACAUIQwMAgsgCiANQSAQupGAgAAhESAMQQFqIQwgEEEoaiEQIA9BYGohDyANQSBqIQ1BfyARQQBHIBFBAEgbIhFBAUYNAAsgEUH/AXFFDQELIA5FDQYgDkF/aiEOIAsgDEECdGpBoAZqKAIAIQsMAQsLIAZBEGogEBCTjoCAACAKQSBqIgogE0cNAAsgBiAEIAZBEGpBARCWgoCAADcDIAJAIAZBIGogBRCEjoCAAEH/AXFBAk8NACAAQQE2AgAgACACKQAANwAEIABBJGogAzYCACAAQRxqIAJBGGopAAA3AAAgAEEUaiACQRBqKQAANwAAIABBDGogAkEIaikAADcAACAGKAIUIg9FDQYgBigCECAPQQN0QQgQt4WAgAAMBgsgE0FgaiEKIAghCyAHIQ4CQANAIAtBXGohECALQcADaiENIAsvAb4DIhRBBXQhD0F/IQwCQANAAkAgDw0AIBQhDAwCCyAKIA1BIBC6kYCAACERIAxBAWohDCAQQShqIRAgD0FgaiEPIA1BIGohDUF/IBFBAEcgEUEASBsiEUEBRg0ACyARQf8BcUUNAgsCQCAORQ0AIA5Bf2ohDiALIAxBAnRqQaAGaigCACELDAELC0GMjsCAAEEaQbiOwIAAEMuQgIAAAAsCQCAQKAIAIANrIg8gEEEMaigCAEkNACAAQQA2AgAgBigCFCIPRQ0GIAYoAhAgD0EDdEEIELeFgIAADAYLIAZBIGogEEEEaigCACAPQQV0ahDDjoCAACACQRhqIAZBIGpBGGopAwA3AAAgAkEQaiAGQSBqQRBqKQMANwAAIAJBCGogBkEgakEIaikDADcAACACIAYpAyA3AAACQCAGKAIUIg9FDQAgBigCECAPQQN0QQgQt4WAgAALAkAgEkUNACAJIBJBBXRBARC3hYCAAAsgA0F/aiEDDAILQciOwIAAQSVB8I7AgAAQy5CAgAAACyAGIAQgDEEcakEBEJaCgIAANwMgAkAgBkEgaiAFEISOgIAAQf8BcUECSQ0AAkAgDEEMaigCAA0AIABBADYCAAwGCyAGQSBqIAxBBGooAgAQw46AgAAgAkEYaiAGQSBqQRhqKQMANwAAIAJBEGogBkEgakEQaikDADcAACACQQhqIAZBIGpBCGopAwA3AAAgAiAGKQMgNwAAIAwoAgBBf2ohAwwBCwsgAEEBNgIAIAAgAikAADcABCAAQSRqIAM2AgAgAEEcaiACQRhqKQAANwAAIABBFGogAkEQaikAADcAACAAQQxqIAJBCGopAAA3AAAMAwtBjI7AgABBGkGojsCAABDLkICAAAALIABBADYCAAsgEkUNACAJIBJBBXRBARC3hYCAAAsgBkHAAGokgICAgAAL7gMBAn8jgICAgABBgAFrIgQkgICAgAAgBEIANwIEIARBOGogARDDjoCAACAEQdgAakEUakIANwIAIARB5ABqQoCAgIAQNwIAIARB2ABqQSRqIANBCGooAgA2AgAgBEIBNwJcIAQgAjYCWCAEIAMpAgA3AnQgBEEQaiAEIARBOGogBEHYAGoQxoSAgAACQCAEKAIUIgNFDQACQCAEKAIYIgVFDQAgAyAFQQV0QQEQt4WAgAALAkAgBEEkaigCACIDRQ0AIAQoAiAgA0EFdEEBELeFgIAACyAEQTBqKAIAIgNFDQAgBCgCLCADQQN0QQgQt4WAgAALIARCADcCPCAEQRBqIAEQw46AgAAgBEHYAGpBGGogBEEQakEYaikDADcDACAEQdgAakEQaiAEQRBqQRBqKQMANwMAIARB2ABqQQhqIARBEGpBCGopAwA3AwAgBCAEKQMQNwNYIARBOGogBEHYAGoQxISAgAAaIABBCGogBEEIaigCADYCACAAIAQpAwA3AgAgACAEKQM4NwIMIABBFGogBEE4akEIaigCADYCACAAIAI2AhggACABKQAANwAcIABBJGogAUEIaikAADcAACAAQSxqIAFBEGopAAA3AAAgAEE0aiABQRhqKQAANwAAIARBgAFqJICAgIAAC7YkAid/A34jgICAgABB4AJrIgUkgICAgAAgBSADNgIMIAVBiAFqIAEQw46AgAAgBUEQaiAAIAVBiAFqIAIQyYCAgAACQAJAIAUoAhAiBkUNACAFKAIUIQcCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBSgCGCIIRQ0AIAVBIGogARDDjoCAACACQQV0IQkgBiAIQQV0aiEKIAVBmAJqQQFyIQsgBUHRAWohDCAFQbEBaiENIAVBiAFqQRxqIQ4gBUGIAWpBEGohDyAFQYgBakEoaiEQIAVB1AFqIRFBAiESIAYhEwNAIAVB+AFqQRhqIgMgE0EYaikAADcDACAFQfgBakEQaiIEIBNBEGopAAA3AwAgBUH4AWpBCGoiFCATQQhqKQAANwMAIAUgEykAADcD+AEgBUGIAWpBCGoiFSAFQfgAakEIaiIWKQIANwMAIAUgBSkCeDcDiAEgBSAXNgKgASAFIBg2ApwBIAUgGTYCmAEgDiAFKQJoNwIAIA5BCGoiGiAFQegAakEIaiIbKAIANgIAIAUgEjoAsAEgDSAFKQBINwAAIA1BCGoiHCAFQcgAakEIaiIdKQAANwAAIA1BEGoiHiAFQcgAakEQaiIfKQAANwAAIA1BGGoiICAFQcgAakEYaiIhKQAANwAAIAxBAmoiIiAFQcQAakECaiIjLQAAOgAAIAwgBS8ARDsAACARQRhqIiQgAykDADcAACARQRBqIiUgBCkDADcAACARQQhqIiYgFCkDADcAACARIAUpA/gBNwAAAkACQCAAKAIEIidFDQAgE0EgaiETIAAoAgAhKANAICdBXGohKSAnQcADaiEEICcvAb4DIipBBXQhA0F/ISsCQANAAkAgAw0AICohKwwCCyARIARBIBC6kYCAACEUICtBAWohKyApQShqISkgA0FgaiEDIARBIGohBEF/IBRBAEcgFEEASBsiFEEBRg0ACyAUQf8BcUUNAwsgKEUNASAoQX9qISggJyArQQJ0akGgBmooAgAhJwwACwtBqJDAgABBN0GskcCAABDLkICAAAALAkACQCApQQxqIgMoAgAiBA0AQQAhBAwBCyALIARBBXQgKUEEaigCAGpBYGoQw46AgABBASEECyAFIAQ6AJgCICkoAgAiFCACSQ0FIAMoAgAiKiAUIAJrIgRJDQIgAyAENgIAAkACQAJAIBJB/wFxQQJHDQAgKUEEaigCACEDIBAgBSkDmAI3AAAgEEEgaiAFQZgCakEgai0AADoAACAQQRhqIAVBmAJqQRhqKQMANwAAIBBBEGogBUGYAmpBEGopAwA3AAAgEEEIaiAFQZgCakEIaikDADcAACADICpBBXQiF2ogAyAEQQV0aiIoayEZQQAhGEEBISdBACErAkAgKiAERg0AIBlB4f///wdPDQcgGUEBELaFgIAAIidFDQggCSAXaiAUQQV0ayEXQQAhA0EAISsDQCAoIANqIgQpAAAhLCAEQQhqKQAAIS0gBEEQaikAACEuICcgA2oiFEEYaiAEQRhqKQAANwAAIBRBEGogLjcAACAUQQhqIC03AAAgFCAsNwAAICtBAWohKyAXIANBIGoiA0cNAAsLIAVBwAJqEJKOgIAAIA4gBSkDwAI3AgAgGiAFQcACakEIaiIDKAIANgIAIAVBADYCoAEgBUIBNwOYASAFICs2ApQBIAUgGUEFdjYCkAEgBSAnNgKMASAFIAI2AogBIAVBwAJqQRhqICQpAAA3AwAgBUHAAmpBEGogJSkAADcDACADICYpAAA3AwAgBSARKQAANwPAAgwBCyAFQcACakEYaiAkKQAANwMAIAVBwAJqQRBqICUpAAA3AwAgBUHAAmpBCGogJikAADcDACAFIBEpAAA3A8ACIBcgGEcNAQsgDyAYELSAgIAAIAUoApgBIRkgBSgCoAEhFwsgGSAXQQV0aiIDIAUpA8ACNwAAIANBGGogBUHAAmpBGGopAwA3AAAgA0EQaiAFQcACakEQaikDADcAACADQQhqIAVBwAJqQQhqKQMANwAAIAUgBSgCoAFBAWo2AqABIA4gKUEcahCTjoCAACAWIBUpAwA3AwAgGyAaKAIANgIAIB0gHCkAADcDACAfIB4pAAA3AwAgISAgKQAANwMAIAUgBSkDiAE3A3ggBSAOKQIANwNoIAUgDSkAADcDSCAFKAKYASEZIAUoApwBIRggBSgCoAEhFyAFLQCwASESICMgIi0AADoAACAFIAwvAAA7AUQgEyAKRw0ACwJAIAdFDQAgBiAHQQV0QQEQt4WAgAALAkAgEg4DCwAMAAsgBUGYAmpBGGogBUHIAGpBGGopAwA3AwAgBUGYAmpBEGogBUHIAGpBEGopAwA3AwAgBUGYAmpBCGogBUHIAGpBCGopAwA3AwAgBSAFKQNINwOYAgJAAkAgACgCBCIRRQ0AIAAoAgAhJwNAIBFBbGohKyARQcADaiEEIBEvAb4DIihBBXQhA0F/ISkCQANAAkAgAw0AICghKQwCCyAFQZgCaiAEQSAQupGAgAAhFCApQQFqISkgK0EoaiErIANBYGohAyAEQSBqIQRBfyAUQQBHIBRBAEgbIhRBAUYNAAsgFEH/AXFFDQMLICdFDQEgJ0F/aiEnIBEgKUECdGpBoAZqKAIAIREMAAsLQYCPwIAAQS1BmJDAgAAQy5CAgAAACwJAICtBCGooAgAiEw0AQQAhEUEAIScMCQsgF0EFdCEnICsoAgAhKEEAIREDQCAoIBFBBXRqISkgJyEDIBkhBAJAA0AgA0UNASADQWBqIQMgBCApQSAQupGAgAAhFCAEQSBqIQQgFA0AC0EBIScgEUEBaiERDAoLIBFBAWoiESATRw0AC0EAIScMCQsgBUHIAGogARDDjoCAACAFQZgCaiAAQRxqIgMQw46AgAAgBUGIAWogBUHIAGoQw46AgAAgBUHAAmogBCAFQZgCaiAFQYgBahDghICAAAJAIAUoAsACIhFFDQAgBSkCxAIhLCAFIBE2AiAgBSAsNwIkIAVBiAFqIAMQw46AgAACQCAsQiCIpyIDICynRw0AIAVBIGogAxC0gICAACAFKAIgIREgBSgCKCEDCyARIANBBXRqIgQgBSkDiAE3AAAgBEEYaiAFQYgBakEYaikDADcAACAEQRBqIAVBiAFqQRBqKQMANwAAIARBCGogBUGIAWpBCGopAwA3AAAgBSADQQFqIgQ2AiggBEUNByARIARBBXRqIRkgACgCBCINRQ0GIAAoAgAhDkEAIRcDQCAXQQFqISogEUEgaiEYIA0hJyAOISgCQANAICdBbGohKSAnQcADaiEEICcvAb4DIhNBBXQhA0F/ISsCQAJAA0ACQCADDQAgEyErDAILIBEgBEEgELqRgIAAIRQgK0EBaiErIClBKGohKSADQWBqIQMgBEEgaiEEQX8gFEEARyAUQQBIGyIUQQFGDQALIBRB/wFxRQ0BCyAoRQ0CIChBf2ohKCAnICtBAnRqQaAGaigCACEnDAELCyAFQYgBaiAFQcgAahDDjoCAAAJAIClBCGoiBCgCACIDIClBBGooAgBHDQAgKSADELSAgIAAIAQoAgAhAwsgKSgCACADQQV0aiIDIAUpA4gBNwAAIANBGGogBUGIAWpBGGopAwA3AAAgA0EQaiAFQYgBakEQaikDADcAACADQQhqIAVBiAFqQQhqKQMANwAAIAQgBCgCAEEBajYCACAXIAUoAigiA08NByAFQfgBaiAFKAIgIBdBBXRqEMOOgIAAAkAgBSgCKCAXTQ0AIAUgKjYCKAsgBUHAAmogBUHIAGoQw46AgAAgBUGIAWpBDGogBUEoaigCADYCACAFIAUpAyA3AowBIAVBpAFqEJKOgIAAIAVBoAFqQQA2AgAgBUIBNwOYASAFIAI2AogBIAVBmAJqIAAgBUHAAmogBUGIAWoQxoSAgAACQCAFKAKcAiIDRQ0AAkAgBSgCoAIiBEUNACADIARBBXRBARC3hYCAAAsCQCAFQawCaigCACIDRQ0AIAUoAqgCIANBBXRBARC3hYCAAAsgBUG4AmooAgAiA0UNACAFKAK0AiADQQN0QQgQt4WAgAALIABBDGohAwJAIABBEGooAgAiBEUNACAFQcACaiADKAIAIAQgBUH4AWoQpICAgAAgBSgCwAINACAFQaACaiAFQcwCaigCADYCACAFIAUpAsQCNwOYAiAFIAM2AqQCIAVBiAFqQQFyIAVBmAJqELmDgIAACyAFQYgBakEYaiAFQcgAakEYaikDADcDACAFQYgBakEQaiAFQcgAakEQaikDADcDACAFQYgBakEIaiAFQcgAakEIaikDADcDACAFIAUpA0g3A4gBIAMgBUGIAWoQxISAgAAaDA0LIBghESAqIRcgGCAZRw0ADAgLCwJAIAdFDQAgBiAHQQV0QQEQt4WAgAALQQEhAwwMCyAEICpB3N/AgAAQvJCAgAAACxCpkICAAAALIBlBARCokICAAAALIAVB1AJqQQA2AgAgBUGIkMCAADYC0AIgBUIBNwLEAiAFQZSRwIAANgLAAiAFQcACakGckcCAABC2kICAAAALIBcgA0GQksCAABC3kICAAAALIANB////P3EhBAJAIANBAWpBB3EiA0UNAANAIBFBIGohESADQX9qIgMNAAsLIARBB0kNAANAIBFBgAJqIhEgGUcNAAsLQbyRwIAAQdMAQaCSwIAAEMuQgIAAAAsgESATRg0AIBdBBXQhDSArKAIAISgDQCAoIBFBBXRqISkgDSEDIBkhBAJAAkADQCADRQ0BIANBYGohAyAEIClBIBC6kYCAACEUIARBIGohBCAUDQALICdBAWohJwwBCyAoIBEgJ2tBBXRqIgMgKSkAADcAACADQRhqIClBGGopAAA3AAAgA0EQaiApQRBqKQAANwAAIANBCGogKUEIaikAADcAAAsgEUEBaiIRIBNHDQALCyArQQhqIgMgEyAnazYCACAFQYgBaiAFQSBqEMOOgIAAAkAgAygCACIEICtBBGooAgBHDQAgKyAEELSAgIAAIAMoAgAhBAsgKygCACAEQQV0aiIEIAUpA4gBNwAAIARBGGogBUGIAWpBGGopAwA3AAAgBEEQaiAFQYgBakEQaikDADcAACAEQQhqIAVBiAFqQQhqKQMANwAAIAMgAygCAEEBajYCAAsgBUHAAmpBGGogBUEgakEYaikDADcDACAFQcACakEQaiAFQSBqQRBqKQMANwMAIAVBwAJqQQhqIAVBIGpBCGopAwA3AwAgBSAFKQMgNwPAAiAFQYgBakEIaiAFQfgAakEIaikDADcDACAFIAUpA3g3A4gBIAUgFzYCoAEgBSAYNgKcASAFIBk2ApgBIAVBrAFqIAVB6ABqQQhqKAIANgIAIAUgBSkDaDcCpAEgBUGYAmogACAFQcACaiAFQYgBahDGhICAACAFKAKcAkUNACAFQZgCakEEchC9gICAACAFQZgCakEQahC9gICAACAFQbQCahC/gICAACAFQZwBakEANgIAIAVBiJDAgAA2ApgBIAVCATcCjAEgBUGAkMCAADYCiAEgBUGIAWpBiJDAgAAQtpCAgAAACyAIDQAgB0UNACAGIAdBBXRBARC3hYCAAAsgBUGYAmpBGGoiEyABQRhqKQAANwMAIAVBmAJqQRBqIg0gAUEQaikAADcDACAFQZgCakEIaiIOIAFBCGopAAA3AwAgBSABKQAANwOYAgJAIAAoAgQiEUUNACAFQYgBakEBciEoA0AgACgCACEnA0AgEUFgaiErIBFBwANqIQQgES8BvgMiF0EFdCEDQX8hKQJAAkADQAJAIAMNACAXISkMAgsgBUGYAmogBEEgELqRgIAAIRQgKUEBaiEpICtBKGohKyADQWBqIQMgBEEgaiEEQX8gFEEARyAUQQBIGyIUQQFGDQALIBRB/wFxRQ0BCyAnRQ0DICdBf2ohJyARIClBAnRqQaAGaigCACERDAELCyArQRhqIAVBDGoQlI6AgAACQCArQQhqKAIAIgMNAEEAIQMMAwsgKCADQQV0ICsoAgBqQWBqEMOOgIAAIBMgKEEYaikAADcDACANIChBEGopAAA3AwAgDiAoQQhqKQAANwMAIAUgKCkAADcDmAIgACgCBCIRDQALC0GwksCAAEHAAEHwksCAABDLkICAAAALIAVB4AJqJICAgIAAIAML+g0IAX8Bfgd/An4EfwF+An8BfiOAgICAAEGAAmsiAySAgICAACADQYABaiABIAIQp4GAgAACQAJAAkAgAykDiAFCAlINACADQSBqIAMoAoABEOaMgIAADAELIANBEGpBOGogA0GAAWpBOGopAwA3AwAgA0EQakEwaiADQYABakEwaikDADcDACADQRBqQShqIANBgAFqQShqKQMANwMAIANBEGpBIGogA0GAAWpBIGopAwA3AwAgA0EQakEYaiADQYABakEYaikDADcDACADQRBqQRBqIANBgAFqQRBqKQMANwMAIANBEGpBCGogA0GAAWpBCGopAwAiBDcDACADIAMpA4ABNwMQIARCAlENACADKAJMIQUgAygCRCECIAMoAkAhBiADKAI8IQEgAygCOCEHIAMoAjQhCCADKAIwIQkgAygCLCEKIAMoAighCyADKQMgIQwgAykDECENIAMoAkghDiADQeUAOgCAASADIAIgBUEYbGo2AvQBIAMgAjYC8AEgAyAONgLsASADIAI2AugBIAMgA0GAAWo2AvgBIANB2AFqIANB6AFqEPmCgIAAAkACQCADLQCAASIFQeUARg0AIANBEGpBCGoiDyADQbkBaikAADcDACADQRBqQRBqIhAgA0HBAWopAAA3AwAgA0EQakEYaiIRIANByQFqKQAANwMAIAMgAykAsQE3AxAgAy0AsAEhDiADKQOoASESIAMoAqQBIQIgAygCoAEhASADKAKcASEGIAMoApgBIQggAykDkAEhDSADKQOIASEMIAMoAoQBIQcgAy8AgQEhCSADLQCDASETIAMgA0HUAWooAAA2AHsgAyADKADRATYCeCATQRB0IRMCQCADKALcASIURQ0AIAMoAtgBIBRBKGxBCBC3hYCAAAsgCSATciEJIANB2ABqQQhqIA8pAwA3AwAgA0HYAGpBEGogECkDADcDACADQdgAakEYaiARKQMANwMAIAMgAykDEDcDWCADIAMoAng2AlAgAyADKAB7NgBTQgIhBAwBCyADKQLcASESIAMoAtgBIQIgA0GAAWogBxCZiICAAAJAAkAgAy0AgAFFDQAgAygChAEhBwwBCwJAIAlBIEYNACADQYKAgIAANgLsASADIAk2AtgBIAMgA0HYAWo2AugBIANBATYClAEgA0IBNwKEASADQcSKwIAANgKAASADIANB6AFqNgKQASADQRBqIANBgAFqEK2QgIAAIANBEGoQxIKAgAAhBwwBCyADLQCBASEOIANBgAFqQRhqIgUgC0EYaikAADcDACADQYABakEQaiIHIAtBEGopAAA3AwAgA0GAAWpBCGoiCSALQQhqKQAANwMAIAMgCykAADcDgAECQAJAIARQRQ0AQgAhBAwBCyADIAGtIAwQpouAgABCASEEIAMpAwghDCADKQMAIRULIANB2ABqQRhqIAUpAwA3AwAgA0HYAGpBEGogBykDADcDACADQdgAakEIaiAJKQMANwMAIAMgAykDgAE3A1ggFaciBUEIdiEJIBVCIIinIQcMAQtB4wAhBUICIQQCQCASpyIBDQAgEiEMDAELIAIgAUEobEEIELeFgIAAIBIhDAsCQCAKRQ0AIAsgCkEBELeFgIAACwJAIARCAlENACAAIA46ADggACASNwMwIAAgAjYCLCAAIAE2AiggACAGNgIkIAAgCDYCICAAIA03AxggACAMNwMQIAAgBzYC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BGo2AkwgAkHkAGpBATYCACACQgI3AlQgAkH0oMCAADYCUCACQYeAgIAANgI0IAIgAkEwajYCYCACIAJBzABqNgIwIAIgAkHQAGoQ8pCAgABFDQ4MDQsgAiABQQRqNgJMIAJB5ABqQQE2AgAgAkIBNwJUIAJBsJ3AgAA2AlAgAkGJgICAADYCNCACIAJBMGo2AmAgAiACQcwAajYCMCACIAJB0ABqEPKQgIAARQ0NDAwLIAIgAUEEajYCTCACQeQAakEBNgIAIAJCATcCVCACQcCawIAANgJQIAJBioCAgAA2AjQgAiACQTBqNgJgIAIgAkHMAGo2AjAgAiACQdAAahDykICAAEUNDAwLCyACIAFBEGo2AiwgAiABQQhqNgJMIAJB5ABqQQI2AgAgAkE8akGLgICAADYCACACQgI3AlQgAkHMnMCAADYCUCACQYqAgIAANgI0IAIgAkEwajYCYCACIAJBzABqNgI4IAIgAkEsajYCMCACIAJB0ABqEPKQgIAARQ0LDAoLIAIgAUEQajYCLCACIAFBCGo2AkwgAkHkAGpBAjYCACACQTxqQYuAgIAANgIAIAJCAjcCVCACQYScwIAANgJQIAJBioCAgAA2AjQgAiACQTBqNgJgIAIgAkHMAGo2AjggAiACQSxqNgIwIAIgAkHQAGoQ8pCAgABFDQoMCQsgAiABQRBqNgIsIAIgAUEIajYCTCACQeQAakECNgIAIAJBPGpBi4CAgAA2AgAgAkICNwJUIAJB3JvAgAA2AlAgAkGKgICAADYCNCACIAJBMGo2AmAgAiACQcwAajYCOCACIAJBLGo2AjAgAiACQdAAahDykICAAEUNCQwICyACIAFBEGo2AiwgAiABQQhqNgJMIAJB5ABqQQI2AgAgAkE8akGLgICAADYCACACQgI3AlQgAkHomsCAADYCUCACQYqAgIAANgI0IAIgAkEwajYCYCACIAJBzABqNgI4IAIgAkEsajYCMCACIAJB0ABqEPKQgIAARQ0IDAcLIAIgAUEYajYCKCACIAFBCGo2AiwgAiABQRBqNgJMIAJBMGpBFGpBAzYCACACQdAAakEUakGMgICAADYCACACQdwAakGLgICAADYCACACQgM3AjQgAkGMncCAADYCMCACQYqAgIAANgJUIAIgAkHQAGo2AkAgAiACQcwAajYCYCACIAJB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I4CAgIAAQcAAayIDJICAgIAAIANBKGogARDggICAAAJAAkAgAygCKEUNACADKAIsIQQMAQsCQCADKQMwIgUgASgCAEEEaigCACIErVYNACAEIAWnayEGA0ACQCABKAIAQQRqKAIAIgcgBksNAEEAIQQgByAGRg0DQcyWwIAAQRkQ0IGAgAAhBAwDCyADQShqIAEQ4ICAgAACQAJAIAMoAihFDQAgAygCLCEEDAELIAMgAykDMCIFNwMAAkAgBUL/////D1YNACADIAVCB4MiCDcDCAJAIAhCBlQNACADQY+AgIAANgIkIAMgA0EIajYCICADQQE2AjwgA0IBNwIsIANBlJvAgAA2AiggAyADQSBqNgI4IANBEGogA0EoahCtkICAACADQRBqEM+BgIAAIQQMAgsCQCAFpyIEQQdLDQBBsJfAgABBFBDQgYCAACEEDAILIAAgBEEDdiAIpyABIAIQrYGAgAAiBEUNAgwECyADQY+AgIAANgIkIAMgAzYCICADQQE2AjwgA0IBNwIsIANBqJfAgAA2AiggAyADQSBqNgI4IANBEGogA0EoahCtkICAACADQRBqEM+BgIAAIQQLIARFDQAMAgsLQbyWwIAAQRAQ0IGAgAAhBAsgA0HAAGokgICAgAAgBAv0AwQCfwF+An8BfiOAgICAAEHAAGsiAySAgICAACADQShqIAEQ4ICAgAACQAJAIAMoAihFDQAgAygCLCEEDAELAkAgAykDMCIFIAEoAgBBBGooAgAiBK1WDQAgBCAFp2shBgNAAkAgASgCAEEEaigCACIHIAZLDQBBACEEIAcgBkYNA0HMlsCAAEEZENCBgIAAIQQMAwsgA0EoaiABEOCAgIAAAkACQCADKAIoRQ0AIAMoAiwhBAwBCyADIAMpAzAiBTcDAAJAIAVC/////w9WDQAgAyAFQgeDIgg3AwgCQCAIQgZUDQAgA0GPgICAADYCJCADIANBCGo2AiAgA0EBNgI8IANCATcCLCADQZSbwIAANgIoIAMgA0EgajYCOCADQRBqIANBKGoQrZCAgAAgA0EQahDPgYCAACEEDAILAkAgBaciBEEHSw0AQbCXwIAAQRQQ0IGAgAAhBAwCCyAAIARBA3YgCKcgASACEMeEgIAAIgRFDQIMBAsgA0GPgICAADYCJCADIAM2AiAgA0EBNgI8IANCATcCLCADQaiXwIAANgIoIAMgA0EgajYCOCADQRBqIANBKGoQrZCAgAAgA0EQahDPgYCAACEECyAERQ0ADAILC0G8lsCAAEEQENCBgIAAIQQLIANBwABqJICAgIAAIAQL9AMEAn8BfgJ/AX4jgICAgABBwABrIgMkgICAgAAgA0EoaiABEOCAgIAAAkACQCADKAIoRQ0AIAMoAiwhBAwBCwJAIAMpAzAiBSABKAIAQQRqKAIAIgStVg0AIAQgBadrIQYDQAJAIAEoAgBBBGooAgAiByAGSw0AQQAhBCAHIAZGDQNBzJbAgABBGRDQgYCAACEEDAMLIANBKGogARDggICAAAJAAkAgAygCKEUNACADKAIsIQQMAQsgAyADKQMwIgU3AwACQCAFQv////8PVg0AIAMgBUIHgyIINwMIAkAgCEIGVA0AIANBj4CAgAA2AiQgAyADQQhqNgIgIANBATYCPCADQgE3AiwgA0GUm8CAADYCKCADIANBIGo2AjggA0EQaiADQShqEK2QgIAAIANBEGoQz4GAgAAhBAwCCwJAIAWnIgRBB0sNAEGwl8CAAEEUENCBgIAAIQQMAgsgACAEQQN2IAinIAEgAhCzgYCAACIERQ0CDAQLIANBj4CAgAA2AiQgAyADNgIgIANBATYCPCADQgE3AiwgA0Gol8CAADYCKCADIANBIGo2AjggA0EQaiADQShqEK2QgIAAIANBEGoQz4GAgAAhBAsgBEUNAAwCCwtBvJbAgABBEBDQgYCAACEECyADQcAAaiSAgICAACAEC/QDBAJ/AX4CfwF+I4CAgIAAQcAAayIDJICAgIAAIANBKGogARDggICAAAJAAkAgAygCKEUNACADKAIsIQQMAQsCQCADKQMwIgUgASgCAEEEaigCACIErVYNACAEIAWnayEGA0ACQCABKAIAQQRqKAIAIgcgBksNAEEAIQQgByAGRg0DQcyWwIAAQRkQ0IGAgAAhBAwDCyADQShqIAEQ4ICAgAACQAJAIAMoAihFDQAgAygCLCEEDAELIAMgAykDMCIFNwMAAkAgBUL/////D1YNACADIAVCB4MiCDcDCAJAIAhCBlQNACADQY+AgIAANgIkIAMgA0EIajYCICADQQE2AjwgA0IBNwIsIANBlJvAgAA2AiggAyADQSBqNgI4IANBEGogA0EoahCtkICAACAD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BSSAgICAACABKAIAIgYoAgghBwJAIAEtAAQNAAJAIAcgBigCBEcNACAGIAcQqYCAgAAgBigCCCEHCyAGKAIAIAdqQSw6AAAgBiAGKAIIQQFqIgc2AggLIAFBADoABAJAIAcgBigCBEcNACAGIAcQqYCAgAAgBigCCCEHCyAGKAIAIAdqQSI6AAAgBiAGKAIIQQFqIgc2AggCQCAGKAIEIAdrIANPDQAgBiAHIAMQuoCAgAAgBigCCCEHCyAGKAIAIAdqIAIgAxC8kYCAABogBiAHIANqIgc2AggCQCAGKAIEIAdrQQFLDQAgBiAHQQIQuoCAgAAgBigCCCEHCyAGKAIAIAdqQaL0ADsAACAGIAdBAmo2AgggBUEQaiAGIAQtAAAQ9oaAgAACQAJAIAUoAhANACAAQQA2AgAMAQsgBUEIaiAFQRBqQQxqKAIAIgY2AgAgBSAFKQIUIgg3AwAgAEEMaiAGNgIAIAAgCDcCBCAAQQE2AgALIAVBIGokgICAgAALyQMBAX8jgICAgABBIGsiAySAgICAACADQRBqIAJB8aHAgABBBkEEEP2GgIAAAkACQAJAAkACQCADKAIQDQAgAyADKAIUNgIIIAMgA0EQakEIai0AADoADCADQRBqIANBCGpB96HAgABBAiABEMCAgIAAIAMoAhANASADQRBqIANBCGpB+aHAgABBAyABQQhqEPiAgIAAIAMoAhANAiADQRBqIANBCGpB/KHAgABBCSABQcgAahD7gICAACADKAIQDQMgA0EQaiADQQhqQYWiwIAAQQggAUHYAGoQ+oCAgAACQCADKAIQDQAgACADKAIIIAMtAAwQk4eAgAAMBQsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMBAsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMAwsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMAgsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMAQsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgALIANBIGokgICAgAALjQEAAkACQAJAAkAgAS0AAA4EAAECAwALIAAgAkGNosCAAEEHQQBBpaLAgABBBhD7hoCAAA8L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ACADKQIcNwIAIABBCGogA0EkaikCADcCACADKAIMIgJFDQIgAygCCCACQQV0QQEQt4WAgAAMAgsgACADKQMINwIEIABBFTYCACAAQQxqIANBEGooAgA2AgAMAQsgACADKQIcNwIAIABBCGogA0EkaikCADcCAAsgA0HAAGokgICAgAALlwUDBX8CfgF/I4CAgIAAQfAAayIDJICAgIAAIANBADYCICADQgg3AxggA0EQaiABEI2HgIAAAkACQAJAIAMtABBBAXFFDQAgAy0AESEEIANB5ABqIQUgA0HQAGpBCGohBgNAAkACQAJAAkAgBEH/AXEiB0EsRg0AIAdB3QBGDQEgAkH/AXFFDQJBACECDAMLIAEQhoeAgAAgA0EIaiABEI2HgIAAAkAgAy0ACEEBcUUNACADLQAJIQQMAwsgA0EENgI4DAULIAAgAykDGDcCBCAAQRU2AgAgAEEMaiADQSBqKAIANgIADAULIANBBzYCOAwDCwJAIARB/wFxQd0ARw0AIANBEzYCOAwDCyADQdAAaiABQcXBwIAAQQRB1MHAgABBAhCLhICAACAGKQMAIQggAykDUCEJAkAgAygCYCIHDQAgAyAJNwM4IAMgCDcDQAwDCyADQShqQQhqIgogBUEIaigCADYCACADIAUpAgA3AygCQCADKAIgIgQgAygCHEcNACADQRhqIAQQs4CAgAAgAygCICEECyADKAIYIARBBXRqIgQgBzYCECAEIAMpAyg3AhQgBEEcaiAKKAIANgIAIAQgCDcDCCAEIAk3AwAgAyADKAIgQQFqNgIgIAMgARCNh4CAACADLQABIQQgAy0AAEEBcQ0ACwsgA0EBNgI4CyAAIAMpAzg3AgAgAEEIaiADQThqQQhqKQMANwIAAkAgAygCICIERQ0AIARBBXQhASADKAIYQRBqIQQDQAJAIARBBGooAgAiBUUNACAEKAIAIAVBARC3hYCAAAsgBEEgaiEEIAFBYGoiAQ0ACwsgAygCHCIERQ0AIAMoAhggBEEFdEEIELeFgIAACyADQfAAaiSAgICAAAubBAMDfwF+AX8jgICAgABBwABrIgMkgICAgAAgA0EANgIoIANCBDcDICADQRhqIAEQjYeAgABBASEEAkACQAJAAkAgAy0AGEEBcQ0ADAELIAMtABkhBQNAAkACQAJAIAVB/wFxIgRBLEYNACAEQd0ARg0FIAJB/wFxRQ0BQQAhAgwCCyABEIaHgIAAIANBEGogARCNh4CAAAJAIAMtABBBAXENAEEEIQQMBAsgAy0AESEFDAELQQchBAwCCwJAIAVB/wFxQd0ARw0AQRMhBAwCCyADQTBqIAEQ/IOAgAAgAykDOCEGIAMoAjQhByADKAIwIgRBFUcNASAHRQ0CAkAgAygCKCIFIAMoAiRHDQAgA0EgaiAFEK+AgIAAIAMoAighBQsgAygCICAFQQxsaiIFIAY3AgQgBSAHNgIAQQEhBCADIAMoAihBAWo2AiggA0EIaiABEI2HgIAAIAMtAAkhBSADLQAIQQFxDQALCyAAIAY3AgggACAHNgIEIAAgBDYCAAJAIAMoAigiAUUNACADKAIgIQUgAUEMbCEBA0ACQCAFQQRqKAIAIgdFDQAgBSgCACAHQQEQt4WAgAALIAVBDGohBSABQXRqIgENAAsLIAMoAiQiBUUNASADKAIgIAVBDGxBBBC3hYCAAAwBCyAAIAMpAyA3AgQgAEEVNgIAIABBDGogA0EoaigCADYCAAsgA0HAAGokgICAgAALjw0DA38DfgJ/I4CAgIAAQfACayIDJICAgIAAIAMgAjYCxAEgAyABNgLAASADQeABahDOh4CAACADIANBwAFqNgLMASADQegBaiEEIANB+AFqIQUCQAJAAkACQAJAAkACQANAIAchBgJAIAMoAswBQQRqKAIADQAgA0HgAmogA0H0AWooAgA2AgAgAyADKQLsATcD2AIgAykDgAIhCCADKAL8ASEBIAMoAvgBIQUMAgsgA0HYAmogA0HMAWoQiIGAgAACQCADKALYAiICDQAgAyAGIAMpA+ACIgcgAhsiBjcD0AEgBkL/////D1YNAyADIAZCB4MiCDcD2AECQCAIQgZUDQAgA0GPgICAADYCvAIgAyADQdgBajYCuAIgA0EBNgLsAiADQgE3AtwCIANBwKnAgAA2AtgCIAMgA0G4Amo2AugCIANByAJqIANB2AJqEK2QgIAAIANByAJqEM+BgIAAIQIMBQsCQCAGpyICQQdLDQBBoKbAgABBFBDQgYCAACECDAULIAinIQECQAJAAkACQCACQQN2IgJBf2oOAgABAgsCQCADKQPgAUIAUg0AIANBCGoQiYiAgAAgA0IBNwPgASADIAMoAhA2AvABIAMgAykDCDcD6AELIAMgAToA2AEgA0ECOgDQAQJAAkAgCEICUQ0AIANB1AJqQaOAgIAANgIAIANBo4CAgAA2AswCIAMgA0HQAWo2AtACIAMgA0HYAWo2AsgCIANBAjYC7AIgA0IDNwLcAiADQYy2wIAANgLYAiADIANByAJqNgLoAiADQbgCaiADQdgCahCtkICAACADQbgCahDPgYCAACEBDAELQQAhAiAEIANBzAFqQeMAEOOAgIAAIgFFDQMLIAMgATYC2AIgA0HYAmpBsKrAgABBDkG+qsCAAEEJELaNgIAAIAMoAtgCIQIMBwtBACECIAEgBSADQcwBakHkABCGhYCAACIBRQ0BIAMgATYC2AIgA0HYAmpBsKrAgABBDkHHqsCAAEEEELaNgIAAIAMoAtgCIQIMBgsgASACIANBzAFqQeQAEOiAgIAAIQILIAJFDQEMBAsLIAMoAtwCIQIgA0HgAmogA0H0AWooAgA2AgAgAyADKQLsATcD2AIgAygC/AEhASADKAL4ASEFIAINAyADKQOAAiEICyADKALoASECIAMpA+ABIQYgA0HYAGpBCGoiBCADQdgCakEIaigCADYCACADIAMpA9gCNwNYIAZCAlENAyADQegAakEUaiIJIAQoAgA2AgAgA0HAAGpBEGoiBCAFNgIAIAMgCDcDiAEgA0EYakEIaiIFIANB6ABqQSRqKAIANgIAIAMgAykDWDcCdCADQcAAakEIaiIKIANB6ABqQRBqKQMANwMAIAMgAjYCcCADIAE2AoQBIAMgAykDcDcDQCADIAMpAoQBNwMYIANBKGpBEGoiAiAEKAIANgIAIANBKGpBCGoiASAKKQMANwMAIAMgAykDQDcDKCADIAY3A+ABIANB4AFqQRBqIAEpAwA3AwAgA0H4AWogAigCADYCACADIAMpAyg3A+gBIANB4AFqQSRqIAUoAgA2AgAgAyADKQMYNwL8ASADQegAaiADQeABahDbh4CAACADLQBoQeUARw0EIAAgAykCbDcCBCAAQRRqIAkpAgA3AgAgAEEMaiADQegAakEMaikCADcCACAAQQA2AgAMBQsgA0GPgICAADYCvAIgAyADQdABajYCuAIgA0EBNgLsAiADQgE3AtwCIANBmKbAgAA2AtgCIAMgA0G4Amo2AugCIANByAJqIANB2AJqEK2QgIAA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NgIIIANBEGoQ0IeAgAAgAyADQQhqNgIsIANBHGohBAJAAkACQAJAAkADQCAGIQUCQCADKAIsQQRqKAIADQAgAygCJCECIAMoAiAhASADKAIcIQcgAygCGCEIIAMoAhQhBCADKAIQIQkMAgsgA0HYAGogA0EsahCIgYCAAAJAIAMoAlgiAg0AIAMgBSADKQNgIgYgAhsiBTcDMCAFQv////8PVg0DIAMgBUIHgyIKNwM4AkAgCkIGVA0AIANBj4CAgAA2AlQgAyADQThqNgJQIANBATYCbCADQgE3AlwgA0HAqcCAADYCWCADIANB0ABqNgJoIANBwABqIANB2ABqEK2QgIAAIANBwABqEM+BgIAAIQIMBQsCQCAFpyICQQdLDQBBoKbAgABBFBDQgYCAACECDAULIAqnIQECQAJAAkACQCACQQN2IgJBf2oOAgABAgtBACECIAEgA0EQaiADQSxqQeQAEIaFgIAAIgFFDQIgAyABNgJYIANB2ABqQcaowIAAQQxB0qjAgABBFBC2jYCAACADKAJYIQIMBwtBACECIAEgBCADQSxqQeQAEIaFgIAAIgFFDQEgAyABNgJYIANB2ABqQcaowIAAQQxB5qjAgABBFRC2jYCAACADKAJYIQIMBgsgASACIANBLGpB5AAQ6ICAgAAhAgsgAkUNAQwECwsgAygCICEBIAMoAhwhByADKAIUIQQgAygCECEJIAMoAlwiAg0DIAMoAiQhAiADKAIYIQgLIAAgAjYCFCAAIAE2AhAgACAHNgIMIAAgCDYCCCAAIAQ2AgQgACAJNgIADAMLIANBj4CAgAA2AlQgAyADQTBqNgJQIANBATYCbCADQgE3AlwgA0GYpsCAADYCWCADIANB0ABqNgJoIANBwABqIANB2ABqEK2QgIAAIANBwABqEM+BgIAAIQILIAMoAiAhASADKAIcIQcgAygCFCEEIAMoAhAhCQsgAEEANgIAIAAgAjYCBAJAIARFDQAgCSAEQQEQt4WAgAALIAFFDQAgByABQQEQt4WAgAALIANB8ABqJICAgIAAC9sQAgJ/A34jgICAgABBsAFrIgMkgICAgAAgAyACNgIEIAMgATYCACADQQhqEM+HgIAAIAMgAzYCfCADQSxqIQQCQAJAAkACQAJAA0AgBiEFAkAgAygCfEEEaigCAA0AIANBwABqQTBqIANBCGpBMGopAwA3AwAgA0HAAGpBKGogA0EIakEoaikDADcDACADQcAAakEgaiADQQhqQSBqKQMANwMAIANBwABqQRhqIANBCGpBGGopAwA3AwAgA0HAAGpBEGogA0EIakEQaikDADcDACADQcAAakEIaiADQQhqQQhqKQMANwMAIAMgAykDCDcDQAwCCyADQcAAaiADQfwAahCIgYCAAAJAIAMoAkAiAg0AIAMgBSADKQNIIgYgAhsiBTcDgAEgBUL/////D1YNAyADIAVCB4MiBzcDiAECQCAHQgZUDQAgA0GPgICAADYClAEgAyADQYgBajYCkAEgA0EBNgJUIANCATcCRCADQcCpwIAANgJAIAMgA0GQAWo2AlAgA0GgAWogA0HAAGoQrZCAgAAgA0GgAWoQz4GAgAAhAgwFCwJAIAWnIgJBB0sNAEGgpsCAAEEUENCBgIAAIQIMBQsgB6chAQJAAkACQAJAAkACQCACQQN2IgJBf2oOBAABAgMECwJAIAMoAggNACADQQhqEMyHgIAACyADIAE6AIgBIANBAjoAgAECQAJAIAdCAlENACADQawBakGjgICAADYCACADQaOAgIAANgKkASADIANBgAFqNgKoASADIANBiAFqNgKgASADQQI2AlQgA0IDNwJEIANBjLbAgAA2AkAgAyADQaABajYCUCADQZABaiADQcAAahCtkICAACADQZABahDPgYCAACEBDAELQQAhAiADQQhqIANB/ABqQeMAEOKAgIAAIgFFDQULIAMgATYCQCADQcAAakH8psCAAEEGQZ6nwIAAQQ4Qto2AgAAgAygCQCECDAkLQQAhAiABIAQgA0H8AGpB5AAQ5IGAgAAiAUUNAyADIAE2AkAgA0HAAGpB/KbAgABBBkGNp8CAAEERELaNgIAAIAMoAkAhAgwICyADIAE6AIgBIANBADoAgAECQAJAIAdQDQAgA0GsAWpBo4CAgAA2AgAgA0GjgICAADYCpAEgAyADQYABajYCqAEgAyADQYgBajYCoAEgA0ECNgJUIANCAzcCRCADQeSmwIAANgJAIAMgA0GgAWo2AlAgA0GQAWogA0HAAGoQrZCAgAAgA0GQAWoQz4GAgAAhAQwBCyADQcAAaiADQfwAahCIgYCAAAJAIAMoAkANACADIAMpA0g+AjhBACECQQBFDQYMCQtBACECIAMoAkQiAUUNAwsgAyABNgJAIANBwABqQfymwIAAQQZBrKfAgABBBxC2jYCAACADKAJAIQIMBwsgAyABOgCIASADQQA6AIABAkACQCAHUA0AIANBrAFqQaOAgIAANgIAIANBo4CAgAA2AqQBIAMgA0GAAWo2AqgBIAMgA0GIAWo2AqABIANBAjYCVCADQgM3AkQgA0HkpsCAADYCQCADIANBoAFqNgJQIANBkAFqIANBwABqEK2QgIAAIANBkAFqEM+BgIAAIQEMAQsgA0HAAGogA0H8AGoQiIGAgAACQCADKAJADQAgAyADKQNIPgI8QQAhAkEARQ0FDAgLQQAhAiADKAJEIgFFDQILIAMgATYCQCADQcAAakH8psCAAEEGQYKnwIAAQQsQto2AgAAgAygCQCECDAYLIAEgAiADQfwAakHkABDogICAACECCyACRQ0BDAQLCyADKAJEIQIgA0HAAGpBMGogA0EIakEwaikDADcDACADQcAAakEoaiADQQhqQShqKQMANwMAIANBwABqQSBqIANBCGpBIGopAwA3AwAgA0HAAGpBGGogA0EIakEYaikDADcDACADQcAAakEQaiADQQhqQRBqKQMANwMAIANBwABqQQhqIANBCGpBCGopAwA3AwAgAyADKQMINwNAIAINAwsgACADKQNANwIAIABBMGogA0HAAGpBMGopAwA3AgAgAEEoaiADQcAAakEoaikDADcCACAAQSBqIANBwABqQSBqKQMANwIAIABBGGogA0HAAGpBGGopAwA3AgAgAEEQaiADQcAAakEQaikDADcCACAAQQhqIANBwABqQQhqKQMANwIADAMLIANBj4CAgAA2ApQBIAMgA0GAAWo2ApABIANBATYCVCADQgE3AkQgA0GYpsCAADYCQCADIANBkAFqNgJQIANBoAFqIANBwABqEK2QgIAAIANBoAFqEM+BgIAAIQILIANBwABqQTBqIANBCGpBMGopAwA3AwAgA0HAAGpBKGogA0EIakEoaikDADcDACADQcAAakEgaiADQQhqQSBqKQMANwMAIANBwABqQRhqIANBCGpBGGopAwA3AwAgA0HAAGpBEGogA0EIakEQaikDADcDACADQcAAakEIaiADQQhqQQhqKQMANwMAIAMgAykDCDcDQAsgAEEANgIkIAAgAjYCAAJAIAMoAkAiAkUNAAJAIAMoAkQiAUUNACACIAFBARC3hYCAAAsCQCADQdAAaigCACICRQ0AIAMoAkwgAkEBELeFgIAACyADKAJYIQQCQCADQeAAaigCACICRQ0AIAJBDGwhASAEIQIDQAJAIAJBBGooAgAiAEUNACACKAIAIABBARC3hYCAAAsgAkEMaiECIAFBdGoiAQ0ACwsgA0HcAGooAgAiAkUNACAEIAJBDGxBBBC3hYCAAAsgA0HkAGoQh4OAgAAgA0HoAGooAgAiAkUNACADKAJkIAJBMGxBBBC3hYCAAAsgA0GwAWokgICAgAALiRcEA38CfgJ/AX4jgICAgABBoAFrIgMkgICAgAAgAyACNgIMIAMgATYCCCADQRBqEMqHgIAAIAMgA0EIajYCZCADQShqIQQgA0HEAGohBQJAAkACQAJAAkADQCAHIQYCQCADKAJkQQRqKAIADQAgA0GIAWpBCGogA0EQakEIaikDADcDACADQYgBakEQaiADQRBqQRBqKQMANwMAIANB0ABqQQhqIANBOGopAwA3AwAgA0HQAGpBEGogA0HAAGooAgA2AgAgAyADKQMQNwOIASADIAMpAzA3A1AgAygCTCEBIAMoAkghBCADKAJEIQggAygCLCEFIAMoAighCQwCCyADQYgBaiADQeQAahCIgYCAAAJAIAMoAogBIgINACADIAYgAykDkAEiByACGyIGNwNoIAZC/////w9WDQMgAyAGQgeDIgo3A3ACQCAKQgZUDQAgA0GPgICAADYCfCADIANB8ABqNgJ4IANBATYCnAEgA0IBNwKMASADQcCpwIAANgKIASADIANB+ABqNgKYASADQdAAaiADQYgBahCtkICAACADQdAAahDPgYCAACECDAULAkAgBqciAkEHSw0AQaCmwIAAQRQQ0IGAgAAhAgwFCyAKpyEBAkACQAJAAkACQAJAAkACQAJAAkAgAkEDdiICQX9qDggAAQIDBAUGBwgLQQAhAiABIAQgA0HkAGpB5AAQhoWAgAAiAUUNCCADIAE2AogBIANBiAFqQcynwIAAQQtB+KfAgABBERC2jYCAACADKAKIASECDA0LIAMgAToAcCADQQA6AGgCQAJAIApQDQAgA0HcAGpBo4CAgAA2AgAgA0GjgICAADYCVCADIANB6ABqNgJYIAMgA0HwAGo2AlAgA0ECNgKcASADQgM3AowBIANB5KbAgAA2AogBIAMgA0HQAGo2ApgBIANB+ABqIANBiAFqEK2QgIAAIANB+ABqEM+BgIAAIQEMAQsgA0GIAWogA0HkAGoQiIGAgAACQCADKAKIAQ0AIAMgAykDkAE+AjRBACECQQBFDQsMDgtBACECIAMoAowBIgFFDQgLIAMgATYCiAEgA0GIAWpBzKfAgABBC0Hlp8CAAEETELaNgIAAIAMoAogBIQIMDAsgAyABOgBwIANBADoAaAJAAkAgClANACADQdwAakGjgICAADYCACADQaOAgIAANgJUIAMgA0HoAGo2AlggAyADQfAAajYCUCADQQI2ApwBIANCAzcCjAEgA0HkpsCAADYCiAEgAyADQdAAajYCmAEgA0H4AGogA0GIAWoQrZCAgAAgA0H4AGoQz4GAgAAhAQwBCyADQYgBaiADQeQAahCIgYCAAAJAIAMoAogBDQAgAyADKQOQATcDEEEAIQJBAEUNCgwNC0EAIQIgAygCjAEiAUUNBwsgAyABNgKIASADQYgBakHMp8CAAEELQdenwIAAQQ4Qto2AgAAgAygCiAEhAgwLCwJAIAMpAxhCAFINACADQgA3AyAgA0IBNwMYCyADIAE6AHAgA0EAOgBoAkACQCAKUA0AIANB3ABqQaOAgIAANgIAIANBo4CAgAA2AlQgAyADQegAajYCWCADIANB8ABqNgJQIANBAjYCnAEgA0IDNwKMASADQeSmwIAANgKIASADIANB0ABqNgKYASADQfgAaiADQYgBahCtkICAACADQfgAahDPgYCAACEBDAELIANBiAFqIANB5ABqEIiBgIAAAkAgAygCiAENACADIAMpA5ABNwMgQQAhAkEARQ0JDAwLQQAhAiADKAKMASIBRQ0GCyADIAE2AogBIANBiAFqQcynwIAAQQtBuajAgABBDRC2jYCAACADKAKIASECDAoLIAMgAToAcCADQQA6AGgCQAJAIApQDQAgA0HcAGpBo4CAgAA2AgAgA0GjgICAADYCVCADIANB6ABqNgJYIAMgA0HwAGo2AlAgA0ECNgKcASADQgM3AowBIANB5KbAgAA2AogBIAMgA0HQAGo2ApgBIANB+ABqIANBiAFqEK2QgIAAIANB+ABqEM+BgIAAIQEMAQsgA0GIAWogA0HkAGoQiIGAgAACQCADKAKIAQ0AIAMgAykDkAE+AjhBACECQQBFDQgMCwtBACECIAMoAowBIgFFDQULIAMgATYCiAEgA0GIAWpBzKfAgABBC0GJqMCAAEELELaNgIAAIAMoAogBIQIMCQsgAyABOgBwIANBADoAaAJAAkAgClANACADQdwAakGjgICAADYCACADQaOAgIAANgJUIAMgA0HoAGo2AlggAyADQfAAajYCUCADQQI2ApwBIANCAzcCjAEgA0HkpsCAADYCiAEgAyADQdAAajYCmAEgA0H4AGogA0GIAWoQrZCAgAAgA0H4AGoQz4GAgAAhAQwBCyADQYgBaiADQeQAahCIgYCAAAJAIAMoAogBDQAgAyADKQOQAT4CPEEAIQJBAEUNBwwKC0EAIQIgAygCjAEiAUUNBAsgAyABNgKIASADQYgBakHMp8CAAEELQaynwIAAQQcQto2AgAAgAygCiAEhAgwICyADIAE6AHAgA0EAOgBoAkACQCAKUA0AIANB3ABqQaOAgIAANgIAIANBo4CAgAA2AlQgAyADQegAajYCWCADIANB8ABqNgJQIANBAjYCnAEgA0IDNwKMASADQeSmwIAANgKIASADIANB0ABqNgKYASADQfgAaiADQYgBahCtkICAACADQfgAahDPgYCAACEBDAELIANBiAFqIANB5ABqEIiBgIAAAkAgAygCiAENACADIAMpA5ABPgJAQQAhAkEARQ0GDAkLQQAhAiADKAKMASIBRQ0DCyADIAE2AogBIANBiAFqQcynwIAAQQtBp6jAgABBEhC2jYCAACADKAKIASECDAcLQQAhAiABIAUgA0HkAGpB5AAQ44GAgAAiAUUNASADIAE2AogBIANBiAFqQcynwIAAQQtBlKjAgABBExC2jYCAACADKAKIASECDAYLIAEgAiADQeQAakHkABDogICAACECCyACRQ0BDAQLCyADKAKMASECIANBiAFqQQhqIANBEGpBCGopAwA3AwAgA0GIAWpBEGogA0EQakEQaikDADcDACADQdAAakEIaiADQThqKQMANwMAIANB0ABqQRBqIANBwABqKAIANgIAIAMgAykDEDcDiAEgAyADKQMwNwNQIAMoAiwhBSADKAIoIQkgAygCTCEBIAMoAkghBCADKAJEIQggAg0DCyAAIAMpA4gBNwMAIAAgBTYCHCAAIAk2AhggACADKQNQNwMgIAAgATYCPCAAIAQ2AjggACAINgI0IABBEGogA0GIAWpBEGopAwA3AwAgAEEIaiADQYgBakEIaikDADcDACAAQShqIANB0ABqQQhqKQMANwMAIABBMGogA0HQAGpBEGooAgA2AgAMAwsgA0GPgICAADYCfCADIANB6ABqNgJ4IANBATYCnAEgA0IBNwKMASADQZimwIAANgKIASADIANB+ABqNgKYASADQdAAaiADQYgBahCtkICAACADQdAAahDPgYCAACECCyADQYgBakEQaiADQRBqQRBqKQMANwMAIANBiAFqQQhqIANBEGpBCGopAwA3AwAgA0HQAGpBCGogA0E4aikDADcDACADQdAAakEQaiADQcAAaigCADYCACADIAMpAxA3A4gBIAMgAykDMDcDUCADKAJMIQEgAygCSCEEIAMoAkQhCCADKAIsIQUgAygCKCEJCyAAQgI3AwggACACNgIAAkAgBUUNACAJIAVBARC3hYCAAAsCQCABRQ0AIAFBGGwhASAIQQhqIQIDQAJAIAJBBGooAgAiAEUNACACKAIAIABBARC3hYCAAAsgAkEYaiECIAFBaGoiAQ0ACwsgBEUNACAIIARBGGxBCBC3hYCAAAsgA0GgAWokgICAgAAL0BEEBn8BfgR/AX4jgICAgABBEGsiAySAgICAACABQRhqIQRBACEFQQAhBgJAIAFBIGooAgBFDQAgBBC+jYCAACEGIAQQvo2AgAAgBkEBcmdBH3NBCWxByQBqQQZ2akEBaiEGCwJAIAEoAiQiB0UNACAHQQFyZ0Efc0EJbEHJAGpBBnZBAWohBQtBACEHQQAhCAJAIAEpAwAiCVANACAJQgGEeadBP3NBCWxByQBqQQZ2QQFqIQgLAkAgASkDCFANACABQRBqKQMAQgGEeadBP3NBCWxByQBqQQZ2QQFqIQcLQQAhCkEAIQsCQCABKAIoENGHgIAARg0AIAE0AihCAYR5p0E/c0EJbEHJAGpBBnZBAWohCwsCQCABKAIsIgxFDQAgDEEBcmdBH3NBCWxByQBqQQZ2QQFqIQoLQQAhDAJAIAEoAjAiDUUNACANQQFyZ0Efc0EJbEHJAGpBBnZBAWohDAsCQAJAAkACQCAFIAZqIAhqIAdqIAtqIApqIAxqIAFBPGooAgAiBWogAUE0aigCACIGIAYg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QEEIIAEgAhDlgYCAACABQRhqIQEgBUFoaiIFDQALCyAAIAY2AgAgA0EQaiSAgICAAAuOAwICfgN/IABBA3QiAK0hAwJAAkAgAEH/AEsNACACKAIIIQAMAQsgAigCCCEAIAMhBANAIASnQYB/ciEFAkACQCACKAIEIABGDQAgACEGDAELIAIgAEEBELqAgIAAIAIoAgghBgsgAiAGQQFqIgA2AgggAigCACAGaiAFOgAAIARC//8AViEGIARCB4giAyEEIAYNAAsLIAOnIQUCQCACKAIEIABHDQAgAiAAQQEQuoCAgAAgAigCCCEACyACIABBAWoiBjYCCCACKAIAIgcgAGogBToAAAJAAkAgASkDACIEQoABWg0AIAQhAwwBCwNAIASnQYB/ciEFAkACQCACKAIEIAZGDQAgBiEADAELIAIgBkEBELqAgIAAIAIoAgAhByACKAIIIQALIAIgAEEBaiIGNgIIIAcgAGogBToAACAEQv//AFYhACAEQgeIIgMhBCAADQALCwJAIAIoAgQgBkcNACACIAZBARC6gICAACACKAIIIQYLIAIgBkEBajYCCCACKAIAIAZqIAM8AAALpgIEAX4BfwF+AX8CQCAAQRBqKAIARQ0AQQEgAEEIaiABEIiFgIAACwJAIAApAwAiAlANAAJAIAEoAgQgASgCCCIDRw0AIAEgA0EBELqAgIAAIAEoAgghAwsgASADQQFqIgA2AgggASgCACADakEQOgAAAkACQCACQoABWg0AIAIhBAwBCwNAIAKnQYB/ciEFAkACQCABKAIEIABGDQAgACEDDAELIAEgAEEBELqAgIAAIAEoAgghAwsgASADQQFqIgA2AgggASgCACADaiAFOgAAIAJC//8AViEDIAJCB4giBCECIAMNAAsLIASnIQMCQCABKAIEIABHDQAgASAAQQEQuoCAgAAgASgCCCEACyABIABBAWo2AgggASgCACAAaiADOgAACwv3AgEBfyOAgICAAEHAAGsiBSSAgICAAAJAAkACQAJAAkACQCABQX9qDgIBAgALIAIgASADIAQQ6ICAgAAhAgwECyACIABBCGogAyAEEIaFgIAAIgJFDQEgBSACNgIoIAVBKGpBs6fAgABBCUHCp8CAAEEKELaNgIAAIAUoAighAgwDCyAFQQA6AAYgBSACOgAHAkAgAkH/AXFFDQAgBUEkakGjgICAADYCACAFQaOAgIAANgIcIAUgBUEGajYCICAFIAVBB2o2AhggBUECNgI8IAVCAzcCLCAFQeSmwIAANgIoIAUgBUEYajYCOCAFQQhqIAVBKGoQrZCAgAAgBUEIahDPgYCAACECDAILIAVBKGogAxCIgYCAAAJAIAUoAigNACAAIAUpAzA3AwAMAQsgBSgCLCICDQELQQAhAgwBCyAFIAI2AiggBUEoakGzp8CAAEEJQbynwIAAQQYQto2AgAAgBSgCKCECCyAFQcAAaiSAgICAACACC6YBAQF/I4CAgIAAQcAAayIDJICAgIAAIANBADYCCCADQgE3AwAgA0EQaiADQbikwIAAEOyQgIAAAkAgASADQRBqENiGgIAADQAgACACIAMoAgAgAygCCBD5hoCAAAJAIAMoAgQiAUUNACADKAIAIAFBARC3hYCAAAsgA0HAAGokgICAgAAPC0HQpMCAAEE3IANBOGpBiKXAgABB5KXAgAAQ2pCAgAAAC6QCAQF/I4CAgIAAQRBrIgUkgICAgAACQAJAAkACQAJAIAFBf2oOAwECAwALIAIgASADIAQQ6ICAgAAhAQwDCwJAIAIgACADIAQQhoWAgAAiAQ0AQQAhAQwDCyAFIAE2AgQgBUEEakH7qMCAAEENQbChwIAAQQUQto2AgAAgBSgCBCEBDAILAkAgAiAAQQxqIAMgBBCGhYCAACIBDQBBACEBDAILIAUgATYCCCAFQQhqQfuowIAAQQ1Bl6nAgABBDRC2jYCAACAFKAIIIQEMAQsCQCACIABBGGogAyAEEIWFgIAAIgENAEEAIQEMAQsgBSABNgIMIAVBDGpB+6jAgABBDUGIqcCAAEEPELaNgIAAIAUoAgwhAQsgBUEQaiSAgICAACABC4gIAQd/I4CAgIAAQfANayICJICAgIAAAkACQAJAAkACQAJAIAEoAgANACABKAIEIQMCQAJAAkACQCABQQhqKAIAIgQNAEEBIQEMAQsgBEEgRg0BIARBf0oiBUUNBSAEIAUQtoWAgAAiAUUNBgsgASADIAQQvJGAgAAhA0E0QQQQtoWAgAAiAQ0BQTRBBBCokICAAAALIAAgAy8AADsAASAAIAMoAAM2AAQgACADKQAHNwAIIABBA2ogA0ECai0AADoAACAAQRBqIANBD2opAAA3AAAgAEEYaiADQRdqKQAANwAAIABBIGogA0Efai0AADoAACAAQQA6AAAMAgsgAUIANwIQIAEgBDYCDCABIAQ2AgggASADNgIEIAFBCDoAACAAIAE2AgQgAUEYakIANwIAIAFBIGpCADcCACABQShqQgA3AgAgAEECOgAADAELIAJBCGogASgCBCABQQhqKAIAEOaCgIAAAkACQCACKALUAUEHRg0AIAJB4AFqIAJBCGpB2AEQvJGAgAAaIAJB0AhqIAJB4AFqEK+BgIAAIAIoAtAIIQQgAigCwA0iA0EIRw0BIABBAjoAACAAIAQ2AgQMAgsgAkH8CGpCADcCACACQfQIakIANwIAIAJB7AhqQgA3AgAgAkHQCGpBCGogAkEIakEIaikDADcDACACQdAIakEQaiIEIAJBCGpBEGooAgA2AgAgAkIANwLkCCACIAIpAwg3A9AIQTRBBBC2hYCAACIBRQ0EIAEgAikD0Ag3AgAgAUEwaiACQdAIakEwaigCADYCACABQShqIAJB0AhqQShqKQMANwIAIAFBIGogAkHQCGpBIGopAwA3AgAgAUEYaiACQdAIakEYaikDADcCACABQRBqIAQpAwA3AgAgAUEIaiACQdAIakEIaikDADcCACAAQQI6AAAgACABNgIEDAELIAJB5ANqIAJB0AhqQQRyQewEELyRgIAAGiACQdgDaiIFIAJB0AhqQZQFaikCADcDACACQdADaiIGIAJB0AhqQYwFaikCADcDACACQcgDaiIHIAJB0AhqQYQFaikCADcDACACQcADaiIIIAJB0AhqQfwEaikCADcDACACIAIpAsQNNwO4A0GcBUEEELaFgIAAIgFFDQQgASAENgIAIAFBBGogAkHkA2pB7AQQvJGAgAAaIAEgAzYC8AQgASACKQO4AzcC9AQgAUH8BGogCCkDADcCACABQYQFaiAHKQMANwIAIAFBjAVqIAYpAwA3AgAgAUGUBWogBSkDADcCACAAIAE2AgQgAEEBOgAACyACQfANaiSAgICAAA8LEKmQgIAAAAsgBCAFEKiQgIAAAAtBNEEEEKiQgIAAAAtBnAVBBBCokICAAAALqxQDAn8BfgJ/I4CAgIAAQeAOayICJICAgIAAAkACQAJAAkACQAJAAkACQAJAIAEoAswBIgNBfWpBBCADQQJLGw4FAAEEAwIACyAAQQI2AvAEDAcLIAJB2ARqQQhqIAFBCGooAgA2AgAgAiABKQIANwPYBCACQfgJaiACQdgEahDdiICAAAJAAkAgASgCDA0AIAIgASgCECIDIAFBFGooAgAiARDuiICAACACKQMAIQQgAkEYakEIaiADIAEQnY6AgAAgAiAENwMYDAELIAFBFGooAgAiA0EgRw0EIAJBJGogASgCECIBQQhqKQAANwIAIAJBGGpBFGogAUEQaikAADcCACACQTRqIAFBGGopAAA3AgAgAkEANgIYIAIgASkAADcCHAsgAkHYBGpBKGogAkH4CWpBKGopAwA3AwAgAkHYBGpBIGogAkH4CWpBIGopAwA3AwAgAkHYBGpBGGogAkH4CWpBGGopAwA3AwAgAkHYBGpBEGogAkH4CWpBEGopAwA3AwAgAkHYBGpBCGogAkH4CWpBCGopAwA3AwAgAkGQBWogAkEYakEIaikDADcDACACQZgFaiACQRhqQRBqKQMANwMAIAJBoAVqIAJBGGpBGGopAwA3AwAgAkGoBWogAkEYakEgaikDADcDACACIAIpA/gJNwPYBCACIAIpAxg3A4gFIAAgAkHYBGpB8AQQvJGAgABBAzYC8AQMBgsgAkECOgC0BCACQQI6AJAEIAJBAjoA7AMgAkECOgDIAyACQQI6AKQDIAJBAjoAgAMgAkECOgDcAiACQQI6ALgCIAJBAjoAlAIgAkECOgDwASACQQI6AMwBIAJBAjoAqAEgAkECOgCEASACQQI6AGAgAkECOgA8IAJBAjoAGEEAIQUgAkEANgLICSACQQA2AuAEIAIgAUHMAWoiBjYC3AQgAiABQQxqNgLYBCACIAJByAlqNgLoBCACIAJBGGo2AuQEIAIgAkG4Dmo2AvgJIAJB2ARqIAJB+AlqIAJByAlqEJSCgIAAGgJAIAIoAsgJIgMNACACQdgEakEIaiIDIAFBCGooAgA2AgAgAiABKQIANwPYBCACQcgJaiACQdgEahDdiICAACACQfgJaiACQRhqQcAEELyRgIAAGgJAIAEoAswBQQJGIgENAAJAAkBBACAGIAEbIgEoAgANACACQRBqIAEoAgQiBSABQQhqKAIAIgEQ7oiAgAAgAikDECEEIAJB2ARqQQhqIAUgARCdjoCAACACIAQ3A9gEDAELIAFBCGooAgAiBUEgRw0GIAJB5ARqIAEoAgQiAUEIaikAADcCACACQewEaiABQRBqKQAANwIAIAJB9ARqIAFBGGopAAA3AgAgAkEANgLYBCACIAEpAAA3AtwECyACQbgOakEgaiACQdgEakEgaikDADcDACACQbgOakEYaiACQdgEakEYaikDADcDACACQbgOakEQaiACQdgEakEQaikDADcDACACQbgOakEIaiACQdgEakEIaikDADcDACACIAIpA9gENwO4DkEBIQULIAJB2ARqQShqIAJByAlqQShqKQMANwMAIAJB2ARqQSBqIAJByAlqQSBqKQMANwMAIAJB2ARqQRhqIAJByAlqQRhqKQMANwMAIAJB2ARqQRBqIAJByAlqQRBqKQMANwMAIAMgAkHICWpBCGopAwA3AwAgAiACKQPICTcD2AQgAkGIBWogAkH4CWpBwAQQvJGAgAAaIABBlAVqIAJBuA5qQSBqKQMANwIAIABBjAVqIAJBuA5qQRhqKQMANwIAIABBhAVqIAJBuA5qQRBqKQMANwIAIABB/ARqIAJBuA5qQQhqKQMANwIAIAAgAikDuA43AvQEIAAgAkHYBGpB8AQQvJGAgAAgBTYC8AQMBgsgAEEINgLwBCAAIAM2AgAgAkEYahCdgYCAAAwFCyACQQI6AJQOIAJBAjoA8A0gAkECOgDMDSACQQI6AKgNIAJBAjoAhA0gAkECOgDgDCACQQI6ALwMIAJBAjoAmAwgAkECOgD0CyACQQI6ANALIAJBAjoArAsgAkECOgCICyACQQI6AOQKIAJBAjoAwAogAkECOgCcCiACQQI6APgJQQAhBSACQQA2AsgJIAJBADYC4AQgAiABNgLYBCACIAFBwAFqIgM2AtwEIAIgAkHICWo2AugEIAIgAkH4CWo2AuQEIAIgAkG4Dmo2AhggAkHYBGogAkEYaiACQcgJahCMgoCAABogAigCyAkiAUUNAyAAQQg2AvAEIAAgATYCACACQfgJahCdgYCAAAwECyACQfgJakEIaiABQQhqKAIANgIAIAIgASkCADcD+AkgAkHYBGogAkH4CWoQ3YiAgAAgAkH4CWogAUEMahCugYCAAAJAIAItAPgJIgFBAkYNACAAIAIvAPkJOwAxIAAgAikDgAo3AjggAEEzaiACLQD7CToAACAAQcAAaiACQfgJakEQaikDADcCACAAQcgAaiACQfgJakEYaikDADcCACAAQdAAaiACQfgJakEgaigCADYCACACKAL8CSEDIABBKGogAkHYBGpBKGopAwA3AgAgAEEgaiACQdgEakEgaikDADcCACAAQRhqIAJB2ARqQRhqKQMANwIAIABBEGogAkHYBGpBEGopAwA3AgAgAEEIaiACQdgEakEIaikDADcCACAAIAIpA9gENwIAIABBBDYC8AQgACADNgI0IAAgAToAMAwECyACKAL8CSEBIABBCDYC8AQgACABNgIAIAIoAtgEIgFBKUkNAyACKALcBCABQQEQt4WAgAAMAwtBICADQaCqwIAAEI6RgIAAAAtBICAFQaCqwIAAEI6RgIAAAAsgAkHYBGogAkH4CWpBwAQQvJGAgAAaAkACQCADKAIAQQJGIgENAAJAAkBBACADIAEbIgEoAgANACACQQhqIAEoAgQiAyABQQhqKAIAIgEQ7oiAgAAgAikDCCEEIAJBGGpBCGogAyABEJ2OgIAAIAIgBDcDGAwBCyABQQhqKAIAIgNBIEcNAiACQSRqIAEoAgQiAUEIaikAADcCACACQSxqIAFBEGopAAA3AgAgAkE0aiABQRhqKQAANwIAIAJBADYCGCACIAEpAAA3AhwLIAJByAlqQSBqIAJBGGpBIGopAwA3AwAgAkHICWpBGGogAkEYakEYaikDADcDACACQcgJakEQaiACQRhqQRBqKQMANwMAIAJByAlqQQhqIAJBGGpBCGopAwA3AwAgAiACKQMYNwPICUEBIQULIAAgAkHYBGpBwAQQvJGAgAAiAUHkBGogAkHoCWopAwA3AgAgAUHcBGogAkHgCWopAwA3AgAgAUHUBGogAkHYCWopAwA3AgAgAUHMBGogAkHQCWopAwA3AgAgASACKQPICTcCxAQgAUEFNgLwBCABIAU2AsAEDAELQSAgA0GgqsCAABCOkYCAAAALIAJB4A5qJICAgIAAC5UCAQF/I4CAgIAAQeAAayIDJICAgIAAIAMgAjYCBCADIAE2AgAgA0EIaiABIAIQpJGAgAACQAJAIAMtAAgNACAAIAMpAxA3AwggAEEANgIAIABBEGogA0EIakEQaikDADcDAAwBCyADIAMtAAk6ACcgA0HEAGpBpICAgAA2AgAgA0GNgICAADYCPCADIANBJ2o2AkAgAyADNgI4IANBAjYCXCADQgI3AkwgA0HgqsCA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IGsiAiSAgICAACACQRBqIAFB1LrBgABBEEHkusGAAEEBEIyEgIAAAkACQAJAAkAgAigCECIDQRVHDQAgAkEcaigCACEEIAJBGGooAgAhAyACKAIUIQUgAkEIaiABEI2HgIAAIAItAAhBAXFFDQEgAi0ACUH/AXFB/QBHDQIgARCGh4CAACAAQQxqIAQ2AgAgAEEIaiADNgIAIAAgBTYCBCAAQRU2AgAMAwsgAikCFCEGIAAgAigCHDYCDCAAIAY3AgQgACADNgIADAILIABBBDYCACADRQ0BIAUgA0EBELeFgIAADAELIABBCzYCACADRQ0AIAUgA0EBELeFgIAACyACQSBqJICAgIAAC40DAwV/AX4CfyOAgICAAEEwayICJICAgIAAIAJBCGogAUGQu8GAAEEWQbS7wYAAQQEQhoSAgAACQAJAAkACQCACKAIIDQAgAkEsaigCACEDIAJBKGooAgAhBCACQSRqKAIAIQUgAkEgaigCACEGIAJBGGopAwAhByACQRRqKAIAIQggAigCECEJIAIgARCNh4CAACACLQAAQQFxRQ0BIAItAAFB/wFxQf0ARw0CIAEQhoeAgAAgAEEkaiADNgIAIABBIGogBDYCACAAQRxqIAU2AgAgAEEYaiAGNgIAIABBEGogBzcDACAAQQxqIAg2AgAgACAJNgIIIABBADYCAAwDCyACKQIMIQcgAEEMaiACQQhqQQxqKQIANwIAIAAgBzcCBCAAQQE2AgAMAgsgAEKBgICAwAA3AwAgBCAIIAYbIgBFDQEgBSAJIAYbIABBARC3hYCAAAwBCyAAQoGAgICwATcDACAEIAggBhsiAEUNACAFIAkgBhsgAEEBELeFgIAACyACQTBqJICAgIAAC5EGAwJ/An4HfyOAgICAAEGQAWsiAiSAgICAACACQcgAaiABQZi5wYAAQRZB4LnBgABBBhCJhICAAAJAAkACQAJAIAIoAmgiA0UNACACQShqQRhqIAJByABqQRhqKQMAIgQ3AwAgAkEoakEQaiACQcgAakEQaikDACIFNwMAIAJBCGpBCGogAkHIAGpBCGopAwA3AwAgAkEIakEQaiAFNwMAIAJBCGpBGGogBDcDACACIAIpA0g3AwggAigCbCEGIAIoAnAhByACKAJ0IQggAigCeCEJIAIoAnwhCiACKAKAASELIAIoAoQB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BhsiAEUNACAFIAkgBhsgAEEBELeFgIAACyACQTBqJICAgIAAC40DAwV/AX4CfyOAgICAAEEwayICJICAgIAAIAJBCGogAUH1u8GAAEERQbS7wYAAQQEQhoSAgAACQAJAAkACQCACKAIIDQAgAkEsaigCACEDIAJBKGooAgAhBCACQSRqKAIAIQUgAkEgaigCACEGIAJBGGopAwAhByACQRRqKAIAIQggAigCECEJIAIgARCNh4CAACACLQAAQQFxRQ0BIAItAAFB/wFxQf0ARw0CIAEQhoeAgAAgAEEkaiADNgIAIABBIGogBDYCACAAQRxqIAU2AgAgAEEYaiAGNgIAIABBEGogBzcDACAAQQxqIAg2AgAgACAJNgIIIABBADYCAAwDCyACKQIMIQcgAEEMaiACQQhqQQxqKQIANwIAIAAgBzcCBCAAQQE2AgAMAgsgAEKBgICAwAA3AwAgBCAIIAYbIgBFDQEgBSAJIAYbIABBARC3hYCAAAwBCyAAQoGAgICwATcDACAEIAggBhsiAEUNACAFIAkgBhsgAEEBELeFgIAACyACQTBqJICAgIAAC4IGAwl/AX4GfyOAgICAAEGgAWsiAiSAgICAACACQcAAaiABQam8wYAAQSFBqL3BgABBBBCDhICAACACQTBqQQhqIgMgAkHAAGpBCGopAwA3AwAgAiACKQNANwMwAkACQAJAAkAgAigCUCIERQ0AIAJBCGpBCGogAkHsAGopAgA3AwAgAkEYaiACQfQAaigCADYCACACIAIpAmQ3AwggAigCYCEFIAIoAlwhBiACKAJYIQcgAigCVCEIIAIoAnghCSACKAJ8IQogAikDgAEhCyACKAKIASEMIAIoAowBIQ0gAigCkAEhDiACKAKUASEPIAIoApgBIRAgAigCnAEhESACQSBqQQhqIAMpAwA3AwAgAiACKQMwNwMgIAIgARCNh4CAACACLQAAQQFxRQ0BIAItAAFB/wFxQf0ARw0CIAEQhoeAgAAgACAFNgIgIAAgBjYCHCAAIAc2AhggACAINgIUIAAgBDYCECAAIBE2AlwgACAQNgJYIAAgDzYCVCAAIA42AlAgACANNgJMIAAgDDYCSCAAIAs3A0AgACAKNgI8IAAgCTYCOCAAQQhqIAJBIGpBCGopAwA3AwAgACACKQMgNwMAIAAgAikDCDcCJCAAQSxqIAJBCGpBCGopAwA3AgAgAEE0aiACQRhqKAIANgIADAMLIAAgAikDMDcCACAAQQA2AhAgAEEIaiADKQMANwIADAILIABBADYCECAAQQQ2AgACQCAIRQ0AIAQgCEEBELeFgIAACwJAIAVFDQAgBiAFQQEQt4WAgAALAkAgCkUNACAJIApBARC3hYCAAAsCQCANRQ0AIAwgDUEBELeFgIAACyAQRQ0BIA8gEEEBELeFgIAADAELIABBADYCECAAQQs2AgACQCAIRQ0AIAQgCEEBELeFgIAACwJAIAVFDQAgBiAFQQEQt4WAgAALAkAgCkUNACAJIApBARC3hYCAAAsCQCANRQ0AIAwgDUEBELeFgIAACyAQRQ0AIA8gEEEBELeFgIAACyACQaABaiSAgICAAAvbBAIIfwF+I4CAgIAAQZABayICJICAgIAAIAJByABqIAFBi7XBgABBD0GstcGAAEECEI2EgIAAIAJBOGpBCGoiAyACQcgAakEIaikDADcDACACIAIpA0g3AzgCQAJAAkACQCACKAJYIgRFDQAgAkEQakEIaiACQfQAaikCADcDACACQSBqIAJB/ABqKAIANgIAIAJBKGpBCGogAykDADcDACACIAIpAmw3AxAgAiACKQM4NwMoIAIoAmghBSACKAJkIQYgAigCYCEHIAIoAlwhCCACKAKAASEJIAIoAoQBIQMgAikDiAEhCiACQQhqIAEQjYeAgAAgAi0ACEEBcUUNASACLQAJQf8BcUH9AEcNAiABEIaHgIAAIAAgBTYCICAAIAY2AhwgACAHNgIYIAAgCDYCFCAAIAQ2AhAgACAKNwNAIAAgAzYCPCAAIAk2AjggAEEIaiACQShqQQhqKQMANwMAIAAgAikDKDcDACAAIAIpAxA3AiQgAEEsaiACQRBqQQhqKQMANwIAIABBNGogAkEgaigCADYCAAwDCyAAIAIpAzg3AgAgAEEANgIQIABBCGogAykDADcCAAwCCyAAQQA2AhAgAEEENgIAAkAgCEUNACAEIAhBARC3hYCAAAsCQCAFRQ0AIAYgBUEBELeFgIAACyADRQ0BIAkgA0EBELeFgIAADAELIABBADYCECAAQQs2AgACQCAIRQ0AIAQgCEEBELeFgIAACwJAIAVFDQAgBiAFQQEQt4WAgAALIANFDQAgCSADQQEQt4WAgAALIAJBkAFqJICAgIAAC/ACAQV/I4CAgIAAQdAAayICJICAgIAAIAJBMGogAUHS+cCAAEEGQdj5wIAAQQIQh4SAgAAgAkEgakEIaiIDIAJBMGpBCGopAwA3AwAgAiACKQMwNwMgAkACQAJAAkAgAigCQCIERQ0AIAJBEGpBCGogAykDADcDACACIAIpAyA3AxAgAigCTCEFIAIoAkghAyACKAJEIQYgAkEIaiABEI2HgIAAIAItAAhBAXFFDQEgAi0ACUH/AXFB/QBHDQIgARCGh4CAACAAIAU2AhwgACADNgIYIAAgBjYCFCAAIAQ2AhAgAEEIaiACQRBqQQhqKQMANwMAIAAgAikDEDcDAAwDCyAAIAIpAyA3AgAgAEEANgIQIABBCGogAykDADcCAAwCCyAAQQA2AhAgAEEENgIAIANFDQEgBiADQQEQt4WAgAAMAQsgAEEANgIQIABBCzYCACADRQ0AIAYgA0EBELeFgIAACyACQdAAaiSAgICAAAuPAwEBfyOAgICAAEHAAGsiBSSAgICAAAJAAkACQAJAAkACQCABQX9qDgIBAgALIAIgASADIAQQ6ICAgAAhAgwECyACIAAgAyAEEIaFgIAAIgJFDQEgBSACNgIoIAVBKGpBmKzAgABBHEHErMCAAEEKELaNgIAAIAUoAighAgwDCyAAQQxqIQECQCAAKAIMDQAgARDNh4CAAAsgBSACOgAHIAVBAjoABgJAIAJB/wFxQQJGDQAgBUEkakGjgICAADYCACAFQaOAgIAANgIcIAUgBUEGajYCICAFIAVBB2o2AhggBUECNgI8IAVCAzcCLCAFQYy2wIAANgIoIAUgBUEYajYCOCAFQQhqIAVBKGoQrZCAgAAgBUEIahDPgYCAACECDAILAkAgBA0AQaS2wIAAQRcQ0IGAgAAhAgwCCyABIAMgBEF/ahDkgICAACICDQELQQAhAgwBCyAFIAI2AiggBUEoakGYrMCAAEEcQbSswIAAQRAQto2AgAAgBSgCKCECCyAFQcAAaiSAgICAACACC5sDAgN/AX4jgICAgABB4ABrIgIkgICAgAAgAkEwaiABEPyDgIAAAkACQAJAAkAgAigCMCIBQRVHDQAgAkEwakEIaigCACEDIAJBMGpBDGooAgAhBCACKAI0IQEgAkEANgIIIAJCATcDACACQRBqIAEgBEGAAiACEJ2FgIAAIAItABBBA0YNASACIAIpAxA3AxggAkEANgIoIAJCATcDICACQTBqIAJBIGpBkNbAgAAQ7JCAgAAgAkEYaiACQTBqEKiMgIAARQ0CQajWwIAAQTcgAkHYAGpB4NbAgABBvNfAgAAQ2pCAgAAACyACKQI0IQUgACACKAI8NgIMIAAgBTcCBCAAIAE2AgAMAgsgACACKQMANwIEIABBFTYCACAAQQxqIAJBCGooAgA2AgAgA0UNASABIANBARC3hYCAAAwBCyAAIAIpAyA3AgQgAEEMaiACQShqKAIANgIAIABBFDYCAAJAIAIoAgQiAEUNACACKAIAIABBARC3hYCAAAsgA0UNACABIANBARC3hYCAAAsgAkHgAGokgICAgAALswEBAX8jgICAgABBIGsiBCSAgICAACAEQQA2AgggBEIBNwMAIAQgBBCujICAADYCDCAEQRBqQYACEK2MgIAAAkAgBEEQaiABIAIgBEEMahDGgoCAAA0AIAAgAyAEKAIAIAQoAggQ+YaAgAACQCAEKAIEIgJFDQAgBCgCACACQQEQt4WAgAALIARBIGokgICAgAAPC0GErMGAAEEiIARBGGpBqKzBgABBkK3BgAAQ2pCAgAAAC9AFAgN/An4jgICAgABBMGsiAiSAgICAACACQRhqIAEQyYiAgAACQAJAAkACQAJAAkACQAJAIAItABgNACACLQAZIgNBA3EiBEEDRg0BIAQOAwIEAwILIAJBCmogAkEYakEMaikCACIFNwEAIAIgAikCHCIGNwECIABBDGogBTcBACAAIAY3AQQgAEEBNgIADAYLAkAgA0EESQ0AIABBBGpBzqzAgABBIhDbjoCAACAAQQE2AgAMBgsgAkEANgIUIAJBGGogASACQRRqQQQQyIiAgAACQCACKAIYRQ0AIAJBCGogAkEYakEQaigCACIBNgIAIAIgAkEYakEIaikDACIFNwMAIAAgAigCHDYCBCAAQQhqIAU3AgAgAEEQaiABNgIAIABBATYCAAwGCyACKAIUIgFB/////wNLDQQgAEEEakHOrMCAAEEiENuOgIAAIABBATYCAAwFCyADQQJ2IQEMAwsgAkEANgIUIAIgAzoAFCACQRhqIAEgAkEUakEBckEDEMiIgIAAIAIoAhhFDQEgAkEIaiACQRhqQRBqKAIAIgE2AgAg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Sw0AIAIgCUECELqAgIAAIAIoAgAhByACKAIIIQkLIAcgCWogAzsAACAJQQJqIQkMAwsgA0H/////A0sNASADQQJ0QQJyIQMCQCACKAIEIAlrQQNLDQAgAiAJQQQQuoCAgAAgAigCACEHIAIoAgghCQsgByAJaiADNgAAIAlBBGohCQwCC0EgQQEQqJCAgAAACwJAIAIoAgQgCUcNACACIAlBARC6gICAACACKAIAIQcgAigCCCEJCyAHIAlqQQM6AAAgAiAJQQFqIgM2AgggASgCACEJAkAgAigCBCADa0EDSw0AIAIgA0EEELqAgIAAIAIoAgghAwsgAigCACADaiAJNgAAIANBBGohCQsgAiAJNgIIAkACQEEgQQEQtoWAgAAiA0UNACADIAEpADA3AAAgA0EYaiIFIAFByABqKQAANwAAIANBEGoiBiABQcAAaikAADcAACADQQhqIgggAUE4aikAADcAAAJAIAIoAgQgCWtBH0sNACACIAlBIBC6gICAACACKAIIIQkLIAIoAgAiBCAJaiIHIAMpAAA3AAAgB0EIaiAIKQAANwAAIAdBEGogBikAADcAACAHQRhqIAUpAAA3AAAgAiAJQSBqIgk2AgggA0EgQQEQt4WAgABBIEEBELaFgIAAIgNFDQEgAyABKQBQNwAAIANBGGoiBSABQegAaikAADcAACADQRBqIgYgAUHgAGopAAA3AAAgA0EIaiIIIAFB2ABqKQAANwAAAkAgAigCBCAJa0EfSw0AIAIgCUEgELqAgIAAIAIoAgAhBCACKAIIIQkLIAQgCWoiByADKQAANwAAIAdBGGogBSkAADcAACAHQRBqIAYpAAA3AAAgB0EIaiAIKQAANwAAIAIgCUEgajYCCCADQSBBARC3hYCAACACIAFBBGo2AgwgAkEMaiACEPaCgIAAIAAgAigCACACKAIIEJ2OgIAAAkAgAigCBCIBRQ0AIAIoAgAgAUEBELeFgIAACyACQRBqJICAgIAADwtBIEEBEKiQgIAAAAtBIEEBEKiQgIAAAAuSAwMGfwF+AX8jgICAgABB0ABrIgQkgICAgAAgBEEIaiABEJmOgIAAAkACQCAEKAIMIgVFDQAgBCgCCCEBIAVBFGwhBSACKAIEIQYgAigCACEHIARBKGpBBHIhCANAIARBEGogARCajoCAACAEIARBEGogByAGEJyOgIAAAkAgBCgCACICRQ0AIAQoAgQhCSAEIAI2AiAgBCAJNgIkIARBKGogBEEgahCuhICAAAJAIAQoAigiAkEFRw0AIARBwABqQQhqIAhBCGopAgA3AwAgBCAIKQIAIgo3A0ACQCAKp0UNACAEQcAAahDJgYCAAAsgBCgCRCICRQ0BIAQoAkgiCUUNASACIAlBARC3hYCAAAwBCyAEKAI0IQkgBCgCMCELAkACQCACDgIBAAILIAlFDQEgCyAJQShsQQgQt4WAgAAMAQsgBCgCLCICRQ0AIAAgBCgCODYCDCAAIAk2AgggACALNgIEDAMLIAFBFGohASAFQWxqIgUNAAsLQQAhAgsgACACNgIAIARB0ABqJICAgIAAC1EBAn8CQCAAKAIAIgEoAgBFDQAgARDJgYCAAAsCQCABKAIEIgJFDQAgAUEIaigCACIBRQ0AIAIgAUEBELeFgIAACyAAKAIAQRBBBBC3hYCAAAuyDAMEfwF+AX8jgICAgABBgAJrIgIkgICAgAAgAkG4AWpBGGoiA0IANwMAIAJBuAFqQRBqIgRCADcDACACQbgBakEIaiIFQgA3AwAgAkIANwO4ASACQdgAaiABIAJBuAFqQSAQ0o6AgAACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAigCWA0AIAJBGGpBCGogBSkDADcDACACQRhqQRBqIAQpAwA3AwAgAkEYakEYaiADKQMANwMAIAIgAikDuAEiBjcDeCACIAY3AxggAkG4AWogARDEgYCAACACKAK4AQ0BIAIoArwBENaOgIAAIQcgAkG4AWpBGGoiA0IANwMAIAJBuAFqQRBqIgRCADcDACACQbgBakEIaiIFQgA3AwAgAkIANwO4ASACQdgAaiABIAJBuAFqQSAQ0o6AgAAgAigCWA0CIAJBOGpBCGogBSkDADcDACACQThqQRBqIAQpAwA3AwAgAkE4akEYaiADKQMANwMAIAIgAikDuAEiBjcDeCACIAY3AzggA0IANwMAIARCADcDACAFQgA3AwAgAkIANwO4ASACQegBaiABIAJBuAFqQSAQ0o6AgAAgAigC6AENAyACQdgAakEIaiACQbgBakEIaikDADcDACACQdgAakEQaiACQbgBakEQaikDADcDACACQdgAakEYaiACQbgBakEYaikDADcDACACIAIpA7gBIgY3A3ggAiAGNwNYIAJBuAFqIAEQxIGAgAAgAigCuAFFDQQgAkGYAWpBDGogAkG4AWpBDGopAgA3AgAgAiACKQK8ATcCnAEMBQsgAkGDAWogAkHYAGpBDGopAgA3AAAgAiACKQJcNwB7QRBBBBC2hYCAACIBRQ0FIAAgATYCCCAAQQA2AgQgASACQfsAaiIDKQAANwAAIABBFGpBJjYCACAAQRBqQZGwwIAANgIAIABBDGpBADYCACABQQhqIANBCGopAAA3AAAMCgtBEEEEELaFgIAAIgFFDQUgASACKQK8ATcCACAAIAE2AgggAEEANgIEIABBFGpBITYCACAAQRBqQbewwIAANgIAIABBDGpBADYCACABQQhqIAJBuAFqQQxqKQIANwIADAkLIAJBgwFqIAJB2ABqQQxqKQIANwAAIAIgAikCXDcAe0EQQQQQtoWAgAAiAUUNBSAAIAE2AgggAEEANgIEIAEgAkH7AGoiAykAADcAACAAQRRqQSU2AgAgAEEQakHYsMCAADYCACAAQQxqQQA2AgAgAUEIaiADQQhqKQAANwAADAgLIAJBgwFqIAJB6AFqQQxqKQIANwAAIAIgAikC7AE3AHtBEEEEELaFgIAAIgFFDQUgACABNgIIIABBADYCBCABIAJB+wBqIgMpAAA3AAAgAEEUakEqNgIAIABBEGpB/bDAgAA2AgAgAEEMakEANgIAIAFBCGogA0EIaikAADcAAAwHCyACQZgBaiABIAIoArwBEO6CgIAAIAIoApgBRQ0FCyACQbgBakEIaiIBIAJBmAFqQQxqKQIANwMAIAIgAikCnAE3A7gBIAJB+ABqQQRyIAJBuAFqQfKvwIAAQR8Q/IGAgAAgASACQfgAakEMaikCADcDACACIAIpAnw3A7gBIABBCGogAkG4AWpBp7HAgABBIRD8gYCAACAAQQA2AgQMBQtBEEEEEKiQgIAAAAtBEEEEEKiQgIAAAAtBEEEEEKiQgIAAAAtBEEEEEKiQgIAAAAsgAkEIakEIaiIBIAJBmAFqQQxqKAIANgIAIAIgAikCnAE3AwggAEEoaiACQRhqQRhqKQMANwAAIABBIGogAkEYakEQaikDADcAACAAQRhqIAJBGGpBCGopAwA3AAAgACACKQMYNwAQIAAgAikDODcAMCAAQThqIAJBOGpBCGopAwA3AAAgAEHAAGogAkE4akEQaikDADcAACAAQcgAaiACQThqQRhqKQMANwAAIAAgAikDWDcAUCAAQdgAaiACQdgAakEIaikDADcAACAAQeAAaiACQdgAakEQaikDADcAACAAQegAaiACQdgAakEYaikDADcAACAAIAc2AgAgACACKQMINwIEIABBDGogASgCADYCAAsgAkGAAmokgICAgAALjxADAn8BfgR/I4CAgIAAQaACayIEJICAgIAAEJaGgIAAIARBGGogAhCphoCAACAEQShqIAMQqYaAgAAgBEGwAWogBCgCGCICIAQoAiAQ1IOAgAACQAJAAkACQAJAIAQoAtABQQJHDQAgBEGQAWpBCGogBEGwAWpBCGopAwA3AwAgBCAEKQOwATcDkAEgBEHYAGpBx5/BgABBGCAEQZABahDUhICAAAwBCyAEQdgAakEwaiAEQbABakEwaikDADcDACAEQdgAakEoaiAEQbABakEoaikDADcDACAEQdgAakEYaiAEQbABakEYaikDADcDACAEQdgAakEQaiAEQbABakEQaikDADcDACAEQdgAakEIaiIDIARBsAFqQQhqKQMANwMAIARB2ABqQSBqIgUgBEGwAWpBIGopAwAiBjcDACAEIAQpA7ABNwNYIAanQQJGDQAgBEHIAGpBCGogAykDADcDACAEQThqQQhqIAUpAwA3AwAgBCAEKQNYNwNIIAQgBCkDcDcDOCAEKAJoIQcgBCgCbCEFIAQoAoABIQggBCgChAEhCSAEKQOIASEGIARB2ABqIAQoAigiCiAEKAIwENuDgIAAAkACQAJAAkACQCAEKAJYQRVHDQAgBC0AXCEDDAELIARBsAFqQQhqIARB2ABqQQhqIgMpAwA3AwAgBCAEKQNYNwOwASAEQZABakGBocGAAEEfIARBsAFqENSEgIAAIAQoApABQQ1HDQEgBC0AlAEhAwsQ3YaAgAAQ3YaAgAAQ3YaAgAAgBEH8AWpBgNbAgAA2AgAgBEH0AWpB1NXAgAA2AgAgBEHsAWpBuNXAgAA2AgAgBEGwAWpBCGogBEHIAGpBCGopAwA3AwAgBEHQAWogBEE4akEIaikDADcDACAEQfgBaiAEQZgCajYCACAEQfABaiAEQZgCajYCACAEIAQpA0g3A7ABIAQgBTYCxAEgBCAHNgLAASAEIAQpAzg3A8gBIAQgAzoAgAIgBCAGNwPgASAEIAk2AtwBIAQgCDYC2AEgBCAEQZgCajYC6AEgBEGQAWogACAEQegBaiAEQbABaiADIAEoAhQRgoCAgAAAIARBkAFqQQRyIQMCQAJAIAQoApABIgFBDUcNACAEQRRqIANBCGooAgA2AgAgBEEANgIIIAQgAykCADcCDAwBCyAEQdgAakEMaiADQQhqKAIANgIAIARB2ABqQRhqIARBkAFqQRhqKQMANwMAIAQgATYCWCAEIAQpA6ABNwNoIAQgAykCADcCXCAEQQA2ApACIARCATcDiAIgBEGwAWogBEGIAmpBzJvBgAAQ7JCAgAAgBEHYAGogBEGwAWoQv4aAgAANAiAEQQhqQQxqIARBkAJqKAIANgIAIAQgBCkDiAI3AgwgBEEBNgIIIARB2ABqEN2EgIAACwJAIAQoAiwiA0UNACAKIANBARC3hYCAAAsgBCgCHCIDRQ0FIAIgA0EBELeFgIAADAULIARB2ABqQRhqIARBkAFqQRhqKQMANwMAIARB2ABqQRBqIARBkAFqQRBqKQMANwMAIAMgBEGQAWpBCGopAwA3AwAgBCAEKQOQATcDWCAEQQA2ApACIARCATcDiAIgBEGwAWogBEGIAmpB0LPAgAAQ7JCAgAAgBEHYAGogBEGwAWoQv4aAgAANASAEQRRqIARBkAJqKAIANgIAIAQgBCkDiAI3AgwgBEEBNgIIIARB2ABqEMyBgIAAAkAgBUUNACAHIAVBARC3hYCAAAsgCUUNAyAIIAlBARC3hYCAAAwDC0Hkm8GAAEE3IARBmAJqQZycwYAAQficwYAAENqQgIAAAAtB6LPAgABBNyAEQZgCakGgtMCAAEH8tMCAABDakICAAAALIARBkAFqQRhqIARB2ABqQRhqKQMANwMAIARBkAFqQRBqIARB2ABqQRBqKQMANwMAIARBkAFqQQhqIARB2ABqQQhqKQMANwMAIAQgBCkDWDcDkAEgBEEANgKQAiAEQgE3A4gCIARBsAFqIARBiAJqQdCzwIAAEOyQgIAAIARBkAFqIARBsAFqEL+GgIAADQIgBEEUaiAEQYgCakEIaigCADYCACAEIAQpA4gCNwIMIARBATYCCCAEQZABahDMgYCAAAsCQCAEKAIsIgNFDQAgBCgCKCADQQEQt4WAgAALIAQoAhwiA0UNACACIANBARC3hYCAAAsgBEGwAWogBEEIahCSg4CAAAJAAkACQCAEKAKwAQ0AIARB2ABqQQxqIARBsAFqQQxqKAIANgIAIAQgBCkCtAE3AlwMAQsgBEGQAWpBCGogBEG8AWooAgA2AgAgBCAEKQK0ATcDkAEgBEHYAGpB35/BgABB1AAgBEGQAWoQ04SAgAAgBCgCWEENRw0BCyAEQZABakEIaiAEQeQAaigCACICNgIAIAQgBCkCXCIGNwOQASAEQbABakEIaiACNgIAIAQgBjcDsAEgBEGwAWoQqIaAgAAhAgJAIARBCGpBCGooAgAiA0UNACAEKAIMIANBARC3hYCAAAsgBEGgAmokgICAgAAgAg8LIARBsAFqQRhqIARB2ABqQRhqKQMANwMAIARBsAFqQRBqIARB2ABqQRBqKQMANwMAIARBsAFqQQhqIARB2ABqQQhqKQMANwMAIAQgBCkDWDcDsAFByLHAgABBKyAEQbABakH0scCAAEGEs8CAABDakICAAAALQeizwIAAQTcgBEGYAmpBoLTAgABB/LTAgAAQ2pCAgAAAC40CAQF/AkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAODAsLAQILAwQFBgcICQALIABBFGohAAwJCyAAQQRqIQAMCAsgAEEEaiEADAcLIABBBGohAAwGCyAAQQRqIQAMBQsgAEEEaiEADAQLAkAgAEEIaigCACIBRQ0AIAAoAgQgAUEBELeFgIAACyAAQRBqIQAMAwsCQCAAQQhqKAIAIgFFDQAgACgCBCABQQEQt4WAgAALIABBEGohAAwCCwJAIABBCGooAgAiAUUNACAAKAIEIAFBARC3hYCAAAsgAEEQaiEADAELIABBBGohAAsgAEEEaigCACIBRQ0AIAAoAgAgAUEBELeFgIAACwv4DwYEfwJ+An8BfgF/An4jgICAgABBgAJrIgMkgICAgAAgAyACNgJ8IAMgATYCeCADQYABahCgjICAACADIANB+ABqNgK0ASADQZgBaiEEIANBpAFqIQUgA0GIAWohBgJAAkACQAJAAkACQAJAAkADQCAIIQcCQCADKAK0AUEEaigCAA0AIANB8AFqIANBlAFqKAIANgIAIAMgAykCjAE3A+gBIAMoAqwBIQkgAygCqAEhASADKAKkASEGIAMoAqABIQogAygCnAEhBCADKAKYASEFDAILIANB6AFqIANBtAFqEM6BgIAAAkAgAygC6AEiAg0AIAMgByADKQPwASIIIAIbIgc3A7gBIAdC/////w9WDQMgAyAHQgeDIgs3A8ABAkAgC0IGVA0AIANBj4CAgAA2AswBIAMgA0HAAWo2AsgBIANBATYC/AEgA0IBNwLsASADQdS2wIAANgLoASADIANByAFqNgL4ASADQdgBaiADQegBahCtkICAACADQdgBahDPgYCAACECDAULAkAgB6ciAkEHSw0AQci1wIAAQRQQ0IGAgAAhAgwFCyALpyEBAkACQAJAAkACQCACQQN2IgJBf2oOAwABAgMLQQAhAiABIAQgA0G0AWpB5AAQhoWAgAAiAUUNAyADIAE2AugBIANB6AFqQYitwIAAQQtB8KzAgABBBBC2jYCAACADKALoASECDAgLQQAhAiABIAUgA0G0AWpB5AAQhoWAgAAiAUUNAiADIAE2AugBIANB6AFqQYitwIAAQQtB9KzAgABBBxC2jYCAACADKALoASECDAcLAkAgAykDgAFCAFINACADQShqEKKMgIAAIANCATcDgAEgAyADKQMwNwOQASADIAMpAyg3A4gBCyADIAE6AMABIANBAjoAuAECQAJAIAtCAlENACADQeQBakGjgICAADYCACADQaOAgIAANgLcASADIANBuAFqNgLgASADIANBwAFqNgLYASADQQI2AvwBIANCAzcC7AEgA0GMtsCAADYC6AEgAyADQdgBajYC+AEgA0HIAWogA0HoAWoQrZCAgAAgA0HIAWoQz4GAgAAhAQwBC0EAIQIgBiADQbQBakHjABDlgICAACIBRQ0CCyADIAE2AugBIANB6AFqQYitwIAAQQtB+6zAgABBDRC2jYCAACADKALoASECDAYLIAEgAiADQbQBakHkABDogICAACECCyACRQ0BDAQLCyADKALsASECIANB8AFqIANBlAFqKAIANgIAIAMgAykCjAE3A+gBIAMoAqgBIQEgAygCpAEhBiADKAKcASEEIAMoApgBIQUgAg0DIAMoAqwBIQkgAygCoAEhCgsgAygCiAEhAiADKQOAASEHIANB6ABqQQhqIgwgA0HoAWpBCGooAgA2AgAgAyADKQPoATcDaCAHQgJRDQMgA0HMAGogDCgCADYCACADIAo2AlggAyAENgJUIAMgAjYCQCADIAMpA2g3AkQgAykDQCEIIAMpA0ghDSADIAMpAlQiC0IgiD4C3AEgAyAFNgLYASADQThqIANB2AFqELuCgIAAIAMoAjgiAg0EIAMgAygCPDYCyAEgA0EANgLwASADQgE3A+gBIANBgAFqIANB6AFqQdCzwIAAEOyQgIAAIANByAFqIANBgAFqELiNgIAADQYCQCADKALIASICKAIAIgRFDQAgAkEEaigCACIKRQ0AIAQgCkEBELeFgIAACyALpyEEAkAgAkEQaigCACIKRQ0AIAIoAgwgCkEEdEEEELeFgIAACyADKALIAUEYQQQQt4WAgAAgAykD6AEhByADKALwASECAkAgBEUNACAFIARBARC3hYCAAAsCQCABRQ0AIAYgAUEBELeFgIAACyADIAI2AvABIAMgBzcD6AEgA0GxgICAADYC3AEgAyADQegBajYC2AEgA0EBNgKUASADQgE3AoQBIANB1IPBgAA2AoABIAMgA0HYAWo2ApABIANBOGogA0GAAWoQrZCAgAAgAEEUaiADQThqEOSMgIAAAkAgAygC7AEiAkUNACADKALoASACQQEQt4WAgAALIABBADYCEAwFCyADQY+AgIAANgLMASADIANBuAFqNgLIASADQQE2AvwBIANCATcC7AEgA0HAtcCAADYC6AEgAyADQcgBajYC+AEgA0HYAWogA0HoAWoQrZCAgAAgA0HYAWoQz4GAgAAhAgsgAygCqAEhASADKAKkASEGIAMoApwBIQQgAygCmAEhBQsCQCAERQ0AIAUgBEEBELeFgIAACyABRQ0AIAYgAUEBELeFgIAACyADQcAAaiACEOaMgIAAIANByABqKQMAIQcgAykDQCELIABBJGogA0HQAGooAgA2AgAgAEEcaiAHNwIAIAAgCzcCFCAAQQA2AhAMAQsgAykDSCEOIAMoAkQhBAJAIAMoAjwiCkUNACACIApBARC3hYCAAAsCQCAOpyICRQ0AIAQgAkEBELeFgIAACwJAAkAgB0IAUg0AIANBCGoQpYuAgAAgAykDECEHIAMpAwghCAwBCyADQRhqIAggDRCmi4CAACADKQMgIQcgAykDGCEICyAAQQE2AiggACAJNgIkIAAgATYCICAAIAY2AhwgACALNwIUIAAgBTYCECAAIAg3AwAgACAHNwMICyADQYACaiSAgICAAA8LQeizwIAAQTcgA0HoAGpBoLTAgABB/LTAgAAQ2pCAgAAAC7EFBAR/AX4BfwJ+AkAgASgCACICQQRqKAIAIgMNAEHctcCAAEEOENCBgIAAIQIgAEEBNgIAIAAgAjYCBA8LAkACQAJAAkACQAJAAkACQCACKAIAIgQsAAAiBUF/Sg0AAkAgA0EKSw0AIAMgBGpBf2osAABBf0oNACAAIAEQ64CAgAAPCyAFQf8BcSAELAABIgFB/wFxQQd0akGAf2ohBQJAAkAgAUF/Sg0AIAUgBCwAAiIBQf8BcUEOdGpBgIB/aiEFIAFBf0oNAyAFIAQsAAMiAUH/AXFBFXRqQYCAgH9qIQUgAUF/Sg0EIAVBgICAgH9qrSEGIAQsAAQiAUF/Sg0FIAFB/wFxIAQsAAUiAUH/AXFBB3RqQYB/aiEFIAFBf0oNBiAFIAQsAAYiAUH/AXFBDnRqQYCAf2ohBSABQX9KDQcgBSAELAAHIgFB/wFxQRV0akGAgIB/aiEFIAFBf0oNCCAELAAIIgetQv8BgyEIQQkhAQJAIAdBf0oNACAEMQAJIglCAloNAiAIIAlCB4Z8QoABfCEIQQohAQsgBUGAgICAf2qtQhyGIAZ8IAhCOIZ8IQYMCQsgBa0hBkECIQEMCAtB3LXAgABBDhDQgYCAACECIABBATYCACAAIAI2AgQPCyAAIAWtQv8BgzcDCCAAQQA2AgAgAkEEaiADQX9qNgIAIAIgBEEBajYCAA8LIAWtIQZBAyEBDAULIAWtIQZBBCEBDAQLIAGtQv8Bg0IchiAGfCEGQQUhAQwDCyAFrUIchiAGfCEGQQYhAQwCCyAFrUIchiAGfCEGQQchAQwBCyAFrUIchiAGfCEGQQghAQsCQCADIAFJDQAgACAGNwMIIABBADYCACACQQRqIAMgAWs2AgAgAiAEIAFqNgIADwsgASADQczqwIAAELiQgIAAAAtKAQF/AkBBGEEEELaFgIAAIgENAEEYQQQQqJCAgAAACyABQQA2AhQgAUIENwIMIAEgACkCADcCACABQQhqIABBCGooAgA2AgAgAQtFAQF/AkBBGEEEELaFgIAAIgINAEEYQQQQqJCAgAAACyACQQA2AhQgAkIENwIMIAIgATYCCCACIAA2AgQgAkEANgIAIAIL3QQCBn8BfiOAgICAAEHQAGsiAiSAgICAACACQTBqIgNCADcDACACQRhqQRBqQgA3AwAgAkEYakEIakIANwMAIAJCADcDGCACQThqIAEgAkEYakEgENKOgIAAAkACQAJAAkACQCACKAI4RQ0AIAJBOGpBEGooAgAhAyACQcQAaigCACEEIAJBOGpBCGooAgAhBSACKAI8IQZBEEEEELaFgIAAIgFFDQIgASADNgIMIAEgBDYCCCABIAU2AgQgASAGNgIAQRBBBBC2hYCAACIDRQ0BQRshBCADQRs2AgwgA0GgrcGAADYCCCADQQA2AgQgAyABNgIAIAAgAzYCBCAAQQxqQZSzwIAANgIAIABBCGpBADYCAAwDCyACQRZqIgQgAi0AGjoAACACIAIvARg7ARQgAiACKQArNwMAIAIgAykAADcABSACKAAbIQMgAigAHyEFIAIoACMhBiACKAAnIQcgAkIANwM4IAJBGGogASACQThqQQgQ0o6AgAACQCACKAIYRQ0AIAJBKGooAgAhBCACKAIcIQEgAEEIaiACQRhqQQhqKQMANwIAIAAgATYCBAwDCyACKQM4IQggACACLwEUOwAIIABBF2ogBzYAACAAQRNqIAY2AAAgAEEPaiAFNgAAIABBC2ogAzYAACAAQRtqIAIpAwA3AAAgAEEgaiACKQAFNwAAIABBKGogCDcDACAAQQA2AgAgAEEKaiAELQAAOgAADAMLQRBBBBCokICAAAALQRBBBBCokICAAAALIABBATYCACAAQRBqIAQ2AgALIAJB0ABqJICAgIAAC7EDAgV/AX4jgICAgABB0ABrIgIkgICAgAAgAkEwaiIDQgA3AwAgAkEYakEQakIANwMAIAJBGGpBCGpCADcDACACQgA3AxggAkE4aiABIAJBGGpBIBDSjoCAAAJAAkACQAJAIAIoAjhFDQAgAkE4akEQaigCACEDIAJBxABqKAIAIQQgAkE4akEIaigCACEFIAIoAjwhBkEQQQQQtoWAgAAiAQ0BQRBBBBCokICAAAALIAAgAi8BGDsAASAAQQNqIAItABo6AAAgAiACKQArNwMIIAIgAykAADcADSACKQAbIQcgAEEMaiACKQAjNwAAIABBBGogBzcAACAAQRRqIAIpAwg3AAAgAEEZaiACKQANNwAAIABBADoAAAwBCyABIAM2AgwgASAENgIIIAEgBTYCBCABIAY2AgBBEEEEELaF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DQUgAEEIaiEBDAQLAkAgAEEIaigCACIBRQ0AIAAoAgQgAUEBELeFgIAACyAAQRBqIQEMAwsgAEEEaiEBDAILIABBBGohAQwBCwJAIABBCGooAgAiAUUNACAAKAIEIAFBARC3hYCAAAsgAEEQaiEBCyABQQRqKAIAIgJFDQAgASgCACACQQEQt4WAgAALIABBOGoQkY2AgAALDwAgACgCACABEO+NgIAAC4oBAQF/I4CAgIAAQSBrIgIkgICAgAAgACgCACEAIAJBCGogAUGMtcCAAEEAEPyQgIAAIAIgADYCGCACIABBIGo2AhwgAkEIaiACQRhqQYy1wIAAEN6QgIAAGiACQQhqIAJBHGpBnLXAgAAQ3pCAgAAaIAJBCGoQ35CAgAAhACACQSBqJICAgIAAIAALDwAgACgCACABELiNgIAACwIAC7cCAQN/AkACQAJAIAAoAgBFDQAgABCIg4CAAAJAIABBBGooAgAiAUUNACAAKAIAIAFB4ABsQQgQt4WAgAALAkAgAEEUaigCACICRQ0AIAAoAgwhASACQRhsIQIDQAJAIAFBBGooAgAiA0UNACABKAIAIANBARC3hYCAAAsCQCABQRBqKAIAIgNFDQAgAUEMaigCACADQQEQt4WAgAALIAFBGGohASACQWhqIgINAAsLAkAgAEEQaigCACIBRQ0AIAAoAgwgAUEYbEEEELeFgIAACyAAQRhqIgEQg4OAgAACQCAAQRxqKAIAIgJFDQAgASgCACACQRhsQQQQt4WAgAALIAAoAiRFDQIgAEEkaiEBDAELIABBBGohAQsgAUEEaigCACICRQ0AIAEoAgAgAkEBELeFgIAACwsjAQF/AkAgAEEEaigCACIBRQ0AIAAoAgAgAUEBELeFgIAACws1AQF/AkAgACgCAA0AIABBCGooAgAiAUUNACAAKAIEIAFBARC3hYCAAAsgAEEQahCRjYCAAAufAQEDf0EAIQQCQCABIANHDQACQCABDQBBAQ8LIAAgAkEgELqRgIAADQAgACkDICACKQMgUg0AIAJBKGohAyAAQShqIQRBASECAkADQCABIAIiAEYNASAEIANBIBC6kYCAAA0BIABBAWohAiADQSBqIQUgBEEgaiEGIANBKGohAyAEQShqIQQgBikDACAFKQMAUQ0ACwsgACABTyEECyAEC/ICAQJ/I4CAgIAAQRBrIgIkgICAgAACQAJAAkACQCABQYABSQ0AIAJBADYCDCABQYAQTw0BIAIgAUE/cUGAAXI6AA0gAiABQQZ2QcABcjoADEECIQEMAgsCQCAAKAIIIgMgACgCBEcNACAAIAMQqYCAgAAgACgCCCEDCyAAKAIAIANqIAE6AAAgACAAKAIIQQFqNgIIDAILAkAgAUGAgARJDQAgAiABQT9xQYABcjoADyACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA0gAiABQRJ2QQdxQfABcjoADEEEIQEMAQsgAiABQT9xQYABcjoADiACIAFBDHZB4AFyOgAMIAIgAUEGdkE/cUGAAXI6AA1BAyEBCwJAIAAoAgQgACgCCCIDayABTw0AIAAgAyABELqAgIAAIAAoAgghAwsgACgCACADaiACQQxqIAEQvJGAgAAaIAAgAyABajYCCAsgAkEQaiSAgICAAEEAC0sBAX8CQCAAKAIEIAAoAggiA2sgAk8NACAAIAMgAhC6gICAACAAKAIIIQMLIAAoAgAgA2ogASACELyRgIAAGiAAIAMgAmo2AghBAAuNBwICfwN+I4CAgIAAQfAAayIDJICAgIAAIAMgAjYCBCADIAE2AgAgA0EIahCfjICAACADIAM2AiQgA0EQaiEEAkACQAJAAkACQANAIAYhBQJAIAMoAiRBBGooAgANACADKQMYIQUgAygCFCEBIAMoAhAhBAwCCyADQdgAaiADQSRqEM6BgIAAAkAgAygCWCICDQAgAyAFIAMpA2AiBiACGyIFNwMoIAVC/////w9WDQMgAyAFQgeDIgc3AzACQCAHQgZUDQAgA0GPgICAADYCPCADIANBMGo2AjggA0EBNgJsIANCATcCXCADQdS2wIAANgJYIAMgA0E4ajYCaCADQcgAaiADQdgAahCtkICAACADQcgAahDPgYCAACECDAULAkAgBaciAkEHSw0AQci1wIAAQRQQ0IGAgAAhAgwFCyAHpyEBAkACQAJAAkAgAkEDdiICQX9qDgIAAQILQQAhAiABIAQgA0EkakHkABCGhYCAACIBRQ0CIAMgATYCWCADQdgAakHctsCAAEEOQfCswIAAQQQQto2AgAAgAygCWCECDAcLIAMgAToAMCADQQA6ACgCQAJAIAdQDQAgA0HUAGpBo4CAgAA2AgAgA0GjgICAADYCTCADIANBKGo2AlAgAyADQTBqNgJIIANBAjYCbCADQgM3AlwgA0HkpsCAADYCWCADIANByABqNgJoIANBOGogA0HYAGoQrZCAgAAgA0E4ahDPgYCAACEBDAELIANB2ABqIANBJGoQiIGAgAACQCADKAJYDQAgAyADKQNgNwMIQQAhAkEARQ0FDAgLQQAhAiADKAJcIgFFDQILIAMgATYCWCADQdgAakHctsCAAEEOQeq2wIAAQQkQto2AgAAgAygCWCECDAYLIAEgAiADQSRqQeQAEOiAgIAAIQILIAJFDQEMBAsLIAMoAhQhASADKAIQIQQgAygCXCICDQMgAykDGCEFCyAAIAU3AxAgACABNgIMIAAgBDYCCCAAIAMpAwg3AwAMAwsgA0GPgICAADYCPCADIANBKGo2AjggA0EBNgJsIANCATcCXCADQcC1wIAANgJYIAMgA0E4ajYCaCADQcgAaiADQdgAahCtkICAACADQcgAahDPgYCAACECCyADKAIUIQEgAygCECEECyAAQQA2AgggACACNgIAIAFFDQAgBCABQQEQt4WAgAALIANB8ABqJICAgIAAC5ECAgR/AX4jgICAgABBEGsiAySAgICAACABQQhqIQRBACEFQQAhBgJAIAFBEGooAgBFDQAgBBC+jYCAACEGIAQQvo2AgAAgBkEBcmdBH3NBCWxByQBqQQZ2akEBaiEGCwJAIAEpAwAiB1ANACAHQgGEeadBP3NBCWxByQBqQQZ2QQFqIQULAkACQAJAAkAgBSAGaiIFIAJBCGooAgBB/////wdzIgZLDQAgAUEQaigCAA0BDAILIANBCGogBSAGELmNgIAAIAAgAykDCDcCBEEBIQUMAgtBASAEIAIQiIWAgAAgASkDACEHC0EAIQUgB1ANAEECIAEgAhCpgYCAAAsgACAFNgIAIANBEGokgICAgAALrgMBAX8jgICAgABB0ABrIgQkgICAgAAgBCAAOgAnIARBAjoAJgJAAkAgAEH/AXFBAkYNACAEQRRqQaOAgIAANgIAIARBo4CAgAA2AgwgBCAEQSZqNgIQIAQgBEEnajYCCCAEQQI2AkwgBEIDNwI8IARBjLbAgAA2AjggBCAEQQhqNgJIIARBKGogBEE4ahCtkICAACAEQShqEM+BgIAAIQAMAQsgBEEIahDJh4CAAAJAAkACQCADDQBBpLbAgABBFxDQgYCAACEADAELIARBCGogAiADQX9qEN+AgIAAIgBFDQELIARBFGooAgAiAUUNASAEKAIQIAFBARC3hYCAAAwBCyAEQThqQRBqIgMgBEEIakEQaikDADcDACAEQThqQQhqIgIgBEEIakEIaikDADcDACAEIAQpAwg3AzgCQCABKAIIIgAgASgCBEcNACABIAAQsoCAgAAgASgCCCEACyABKAIAIABBGGxqIgAgBCkDODcDACAAQRBqIAMpAwA3AwAgAEEIaiACKQMANwMAIAEgASgCCEEBajYCCEEAIQALIARB0ABqJICAgIAAIAALqgYBBH8jgICAgABBgAFrIgQkgICAgAAgBCAAOgBvIARBAjoAbgJAAkAgAEH/AXFBAkYNACAEQRRqQaOAgIAANgIAIARBo4CAgAA2AgwgBCAEQe4AajYCECAEIARB7wBqNgIIIARBAjYCTCAEQgM3AjwgBEGMtsCAADYCOCAEIARBCGo2AkggBEHwAGogBEE4ahCtkICAACAEQfAAahDPgYCAACECDAELIARBCGoQy4eAgAACQAJAAkAgAw0AQaS2wIAAQRcQ0IGAgAAhAgwBCyAEQQhqIAIgA0F/ahDhgICAACICRQ0BCwJAIAQoAgwiAEUNACAEKAIIIABBARC3hYCAAAsgBCgCFCIARQ0BAkAgBEEcaigCACIBRQ0AIAFBDGwhAQNAAkAgAEEEaigCACIDRQ0AIAAoAgAgA0EBELeFgIAACyAAQQxqIQAgAUF0aiIBDQALCwJAIARBGGooAgAiAEUNACAEKAIUIABBDGxBBBC3hYCAAAsCQCAEQSRqKAIAIgBFDQAgBEEgaigCACAAQQEQt4WAgAALAkAgBEE0aigCACIBRQ0AIARBLGooAgAhACABQQxsIQEDQAJAIABBBGooAgAiA0UNACAAKAIAIANBARC3hYCAAAsgAEEMaiEAIAFBdGoiAQ0ACwsgBEEwaigCACIARQ0BIAQoAiwgAEEMbEEEELeFgIAADAELIARBOGpBKGoiAyAEQQhqQShqKQMANwMAIARBOGpBIGoiAiAEQQhqQSBqKQMANwMAIARBOGpBGGoiBSAEQQhqQRhqKQMANwMAIARBOGpBEGoiBiAEQQhqQRBqKQMANwMAIARBOGpBCGoiByAEQQhqQQhqKQMANwMAIAQgBCkDCDcDOAJAIAEoAggiACABKAIERw0AIAEgABCugICAACABKAIIIQALIAEoAgAgAEEwbGoiACAEKQM4NwIAIABBKGogAykDADcCACAAQSBqIAIpAwA3AgAgAEEYaiAFKQMANwIAIABBEGogBikDADcCACAAQQhqIAcpAwA3AgAgASABKAIIQQFqNgIIQQAhAgsgBEGAAWokgICAgAAgAguGBAICfgN/IABBA3RBAnIiAK0hAwJAAkAgAEH/AEsNACACKAIIIQAMAQsgAigCCCEAIAMhBANAIASnQYB/ciEFAkACQCACKAIEIABGDQAgACEGDAELIAIgAEEBELqAgIAAIAIoAgghBgsgAiAGQQFqIgA2AgggAigCACAGaiAFOgAAIARC//8AViEGIARCB4giAyEEIAYNAAsLIAOnIQYCQCACKAIEIABHDQAgAiAAQQEQuoCAgAAgAigCCCEACyACKAIAIABqIAY6AAAgAiAAQQFqIgA2AghBACEGQQAhBQJAIAFBEGooAgBFDQAgAUEIaiIFEL6NgIAAIQcgBRC+jYCAACAHQQFyZ0Efc0EJbEHJAGpBBnZqQQFqIQULAkAgASkDACIEUA0AIARCAYR5p0E/c0EJbEHJAGpBBnZBAWohBgsgBiAFaiIGrSEEAkACQCAGQYABTw0AIAQhAwwBCwNAIASnQYB/ciEFAkACQCACKAIEIABGDQAgACEGDAELIAIgAEEBELqAgIAAIAIoAgghBgsgAiAGQQFqIgA2AgggAigCACAGaiAFOgAAIARC//8AViEGIARCB4giAyEEIAYNAAsLAkAgAigCBCAARw0AIAIgAEEBELqAgIAAIAIoAgghAAsgAiAAQQFqNgIIIAIoAgAgAGogAzwAACABIAIQqoGAgAALiQMBBH8CQCAAKAIAIgBBP0sNACAAQQJ0IQICQCABKAIEIAEoAggiAEcNACABIABBARC6gICAACABKAIIIQALIAEgAEEBajYCCCABKAIAIABqIAI6AAAPCwJAIABB//8ASw0AIABBAnRBAXIhAgJAIAEoAgQgASgCCCIAa0EBSw0AIAEgAEECELqAgIAAIAEoAgghAAsgASAAQQJqNgIIIAEoAgAgAGogAjsAAA8LAkAgAEH/////A0sNACAAQQJ0QQJyIQICQCABKAIEIAEoAggiAGtBA0sNACABIABBBBC6gICAACABKAIIIQALIAEgAEEEajYCCCABKAIAIABqIAI2AAAPCwJAIAEoAgQiAyABKAIIIgRHDQAgASAEQQEQuoCAgAAgASgCBCEDIAEoAgghBAsgASAEQQFqIgI2AgggASgCACIFIARqQQM6AAACQCADIAJrQQNLDQAgASACQQQQuoCAgAAgASgCACEFIAEoAgghAgsgASACQQRqNgIIIAUgAmogADYAAAvlDgQCfwF+AX8BfiOAgICAAEHwAGsiAiSAgICAACACQQA6AC8gAkHYAGogASACQS9qQQEQ0o6AgAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKAJYDQAgAi0ALw4JAwEBAQQFBgEHAQsgAkEiaiACQdgAakEMaikCADcBACACIAIpAlw3ARpBEEEEELaFgIAAIgFFDRIgASACQRpqIgMpAQA3AQAgAUEIaiADQQhqKQEANwEAIAJBwABqQRBqQT42AgAgAkHAAGpBDGpBtK/AgAA2AgAgAkHAAGpBCGpBADYCACACIAE2AkQMAQsgAkHAAGpBBHJB/K7AgABBOBDbjoCAACACKAJEIQELIAJBCGpBCGogAkHAAGpBEGooAgAiAzYCACACIAJBwABqQQhqKQMAIgQ3AwggACABNgIEIABBCGogBDcCACAAQRBqIAM2AgAgAEEFOgAADBILIAJB2ABqIAEQxIGAgAAgAigCWEUNDSACQcAAakEMaiACQdgAakEMaikCADcCACACIAIpAlw3AkQMDgsgAkEANgJAIAJB2ABqIAEgAkHAAGpBBBDSjoCAACACKAJYDQogAigCQCEDIAJB2ABqIAEQxIGAgAACQAJAIAIoAlhFDQAgAkHAAGpBDGogAkHYAGpBDGopAgA3AgAgAiACKQJcNwJEDAELIAJBwABqIAEgAigCXBDwgoCAACACKAJARQ0KCyACQRhqQQhqIAJB0ABqKAIANgIAIAIgAkHAAGpBCGopAwA3AxggAigCRCIDQQh2IQUMCwsgAkEANgJAIAJB2ABqIAEgAkHAAGpBBBDSjoCAACACKAJYDQYgAigCQCEDIAJB2ABqIAEQxIGAgAACQAJAIAIoAlhFDQAgAkHAAGpBDGogAkHYAGpBDGopAgA3AgAgAiACKQJc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AgAhAyAAKAIIIQQLIAMgBGogBTYAACAEQQRqIQEMAwsQqZCAgAAACyABIAQQqJCAgAAAC0EAIQQCQCABDQAgAEEAQQEQuoCAgAAgACgCACEDIAAoAgghBAsgAyAEakEDOgAAIAAgBEEBaiIBNgIIIAYoAgAhAwJAIAAoAgQgAWtBA0sNACAAIAFBBBC6gICAACAAKAIIIQELIAAoAgAgAWogAzYAACABQQRqIQELIAAgATYCCCACQRBqJICAgIAAC+ELBAR/AX4Gfwd+I4CAgIAAQZACayIDJICAgIAAIAMgAjYCBCADQbWAgIAANgJsIAMgA0EEajYCaCADQQE2ArwBIANCATcCrAEgA0Ggt8CAADYCqAEgAyADQegAajYCuAEgA0EIaiADQagBahCtkICAACABQcAAaigCACIEIAMoAggiAiADKAIQIAFBxABqKAIAKAIoIgURg4CAgAAAAkAgAygCDCIGRQ0AIAIgBkEBELeFgIAACyABQTxqKAIAIQIgAUE4aigCACEGAkACQAJAQQtBARC2hYCAACIBRQ0AIAFBB2pBACgAwcHAgAA2AAAgAUEAKQC6wcCAADcAACADQegAaiAGIAFBCyACKAIMEYCAgIAAACABQQtBARC3hYCAAAJAAkAgAygCaEUNACADQbQBaiADQfAAaigCADYCACADIAMpA2g3AqwBDAELIANBCGogAygCBBCvkICAACADQagBaiADQQhqEPKJgIAAIAMtAKgBIgFBOUcNAgsgA0GoAWpBCGooAgAhASADQagBaiADKAKsASICIANBtAFqKAIAEOuBgIAAAkAgAykDqAEiB0ICUQ0AIANB6ABqQThqIgYgA0GoAWpBwABqKQMANwMAIANB6ABqQTBqIgggA0GoAWpBOGopAwA3AwAgA0HoAGpBKGoiCSADQagBakEwaikDADcDACADQegAakEgaiIKIANBqAFqQShqKQMANwMAIANB6ABqQRhqIgsgA0GoAWpBIGopAwA3AwAgA0HoAGpBEGoiDCADQagBakEYaikDADcDACADQegAakEIaiINIANBqAFqQRBqKQMANwMAIANBCGpB0ABqIANBqAFqQdAAaikDADcDACADQQhqQdgAaiADQagBakHYAGopAwA3AwAgAyADKQOwATcDaCADIAMpA/ABNwNQIANBCGpBEGogDSkDADcDACADQQhqQRhqIAwpAwA3AwAgA0EIakEgaiALKQMANwMAIANBCGpBKGogCikDADcDACADQQhqQTBqIAkpAwA3AwAgA0EIakE4aiAIKQMANwMAIANBCGpBwABqIAYpAwA3AwAgAyAHNwMIIAMgAykDaDcDECADQbaAgIAANgKMAiADIANBCGo2AogCIANBATYCvAEgA0IBNwKsASADQdi3wIAANgKoASADIANBiAJqNgK4ASADQegAaiADQagBahCtkICAACAEIAMoAmgiBiADKAJwIAURg4CAgAAAAkAgAygCbCIERQ0AIAYgBEEBELeFgIAACyAAIANBCGpB4AAQvJGAgAAaIAFFDQMgAiABQQEQt4WAgAAMAwsgA0HoAGpBOGogA0GoAWpBwABqKQMAIgc3AwAgA0HoAGpBMGogA0GoAWpBOGopAwAiDjcDACADQegAakEoaiADQagBakEwaikDACIPNwMAIANB6ABqQSBqIANBqAFqQShqKQMAIhA3AwAgA0HoAGpBGGogA0GoAWpBIGopAwAiETcDACADQegAakEQaiADQagBakEYaikDACISNwMAIANB6ABqQQhqIANBqAFqQRBqKQMAIhM3AwAgAyADKQOwASIUNwNoIABBwABqIAc3AwAgAEE4aiAONwMAIABBMGogDzcDACAAQShqIBA3AwAgAEEgaiARNwMAIABBGGogEjcDACAAQRBqIBM3AwAgACAUNwMIIABCAjcDACABRQ0CIAIgAUEBELeFgIAADAILQQtBARCokICAAAALIABBC2ogAy0AqwE6AAAgAEEJaiADLwCpATsAACAAQRhqIAMpA7gBNwMAIABBIGogA0GoAWpBGGopAwA3AwAgAEEoaiADQagBakEgaikDADcDACAAQTBqIANBqAFqQShqKQMANwMAIABBOGogA0GoAWpBMGopAwA3AwAgAEHAAGogA0GoAWpBOGopAwA3AwAgAykCrAEhByAAQRRqIAMoArQBNgIAIABBDGogBzcCACAAIAE6AAggAEICNwMACyADQZACaiSAgICAAAu2EwUMfwF+AX8HfgV/I4CAgIAAQfACayIDJICAgIAAIANBgAFqIAEgAhC9goCAAAJAAkACQAJAAkACQAJAIAMoAoABRQ0AIANB9AFqIANBkAFqKQMANwIAIANB7AFqIANBiAFqKQMANwIAIAMgAykDgAE3AuQBDAELIANB4AFqIAMoAoQBEPaJgIAAIAMtAOABIgJBOUcNAQsgA0H0AWooAgAhASADQeABakEIaigCACEEIAMoAuQBIQUgA0GAAWogA0HgAWpBEGooAgAiBiADQfgBaigCABDNgYCAAAJAAkACQAJAAkACQAJAAkAgAygCkAEiAkUNACADQc8AaiADQYABakEIaikDADcAACADQTBqQQhqIANBrAFqKAIANgIAIAMgAykDgAE3AEcgAyADKQKkATcDMCADKAKUASEHIAMoApgBIQggAygCnAEhCSADKAKgASEKDAELIANBwAJqQRBqIANBpAFqKAIANgIAIANBwAJqQQhqIANBnAFqKQIANwMAIAMgAykClAE3A8ACIANBkYCAgAA2AuwCIAMgA0HAAmo2AugCIANBATYC9AEgA0IBNwLkASADQdS7wIAANgLgASADIANB6AJqNgLwASADQdgCaiADQeABahCtkICAACADQeABaiADQdgCahD0iYCAAAJAIAMoAsACDQAgA0HIAmooAgAiAkUNACADKALEAiACQQEQt4WAgAALIANBwAJqQRBqEJGNgIAAIANBwABqQQhqIgsgA0HgAWpBCWopAAA3AwAgA0HAAGpBD2oiDCADQeABakEQaikAADcAACADQTBqQQhqIg0gA0HgAWpBNGooAgA2AgAgAyADKQDhATcDQCADIAMpAowCNwMwIAMoAvgBIQIgAygC/AEhByADKAKAAiEIIAMoAoQCIQkgAygCiAIhCiADLQDgASIOQTlHDQELIANBgAFqIAIgCBC9goCAACADKAKAAUUNASADQfQBaiADQZABaikDADcCACADQewBaiADQYgBaikDADcCACADIAMpA4ABNwLkAQwCCyADKQOYAiEPIANBGGpBD2oiECAMKQAANwAAIANBGGpBCGoiDCALKQMANwMAIANBCGpBCGoiCyANKAIANgIAIAMgAykDQCIRNwMYIAMgAykDMDcDCCAAQRhqIBApAAA3AAAgAEERaiAMKQMANwAAIABBCWogETcAACAAQTBqIAo2AAAgAEEsaiAJNgAAIABBKGogCDYAACAAQSRqIAc2AAAgAEEgaiACNgAAIABBwABqIA83AwAgACAOOgAIIABCAjcDACAAQTRqIAMpAwg3AAAgAEE8aiALKAIANgAADAgLIANB4AFqIAMoAoQBEPaJgIAAIAMtAOABIghBOUcNAQsgA0H0AWooAgAhCCADQeABakEIaigCACELIAMoAuQBIQwgA0HgAWogA0HgAWpBEGoiDigCACINIANB+AFqIhAoAgAQz4CAgAAgAykD4AFCAlINASADQRhqQRBqIBAoAgA2AgAgA0EYakEIaiAOKQMANwMAIAMgAykD6AE3AxggA0GAAWpBCGogA0EYahD5iYCAAAwCCyAAQQtqIAMtAOMBOgAAIABBCWogAy8A4QE7AAAgAEEkaiADKQL8ATcCACAAQSxqIANB4AFqQSRqKQIANwIAIABBNGogA0HgAWpBLGopAgA3AgAgAEE8aiADQeABakE0aikCADcCACAAQcQAaiADQeABakE8aigCADYCACADKQLkASEPIAMpAuwBIREgAEEcaiADKQL0ATcAACAAQRRqIBE3AAAgAEEMaiAPNwAAIAAgCDoACCAAQgI3AwAMBAsgA0GAAWogA0HgAWpB4AAQvJGAgAAaIAMpA4ABIg9CAlINAgsgA0HAAGpBOGogA0GAAWpBwABqKQMAIg83AwAgA0HAAGpBMGogA0GAAWpBOGopAwAiETcDACADQcAAakEoaiADQYABakEwaikDACISNwMAIANBwABqQSBqIANBgAFqQShqKQMAIhM3AwAgA0HAAGpBGGogA0GAAWpBIGopAwAiFDcDACADQcAAakEQaiADQYABakEYaikDACIVNwMAIANByABqIANBgAFqQRBqKQMAIhY3AwAgAyADKQOIASIXNwNAIABBwABqIA83AwAgAEE4aiARNwMAIABBMGogEjcDACAAQShqIBM3AwAgAEEgaiAUNwMAIABBGGogFTcDACAAQRBqIBY3AwAgACAXNwMIIABCAjcDAAJAIAtFDQAgDCALQQEQt4WAgAALIAhFDQIgDSAIQQEQt4WAgAAMAgsgAEELaiADLQDjAToAACAAQQlqIAMvAOEBOwAAIABBJGogAykC/AE3AgAgAEEsaiADQeABakEkaikCADcCACAAQTRqIANB4AFqQSxqKQIANwIAIABBPGogA0HgAWpBNGopAgA3AgAgAEHEAGogA0HgAWpBPGooAgA2AgAgAykC5AEhDyADKQLsASERIABBHGogAykC9AE3AAAgAEEUaiARNwAAIABBDGogDzcAACAAIAI6AAggAEICNwMADAMLIAAgAykDyAE3A0ggA0HAAGpBOGoiDiADQYABakHAAGopAwA3AwAgA0HAAGpBMGoiECADQYABakE4aikDADcDACADQcAAakEoaiIYIANBgAFqQTBqKQMANwMAIANBwABqQSBqIhkgA0GAAWpBKGopAwA3AwAgA0HAAGpBGGoiGiADQYABakEgaikDADcDACADQcAAakEQaiIbIANBgAFqQRhqKQMANwMAIANByABqIhwgA0GAAWpBEGopAwA3AwAgAEHQAGogA0GAAWpB0ABqKQMANwMAIABB2ABqIANBgAFqQdgAaikDADcDACADIAMpA4gBNwNAIABBwABqIA4pAwA3AwAgAEE4aiAQKQMANwMAIABBMGogGCkDADcDACAAQShqIBkpAwA3AwAgAEEgaiAaKQMANwMAIABBGGogGykDADcDACAAQRBqIBwpAwA3AwAgACADKQNANwMIIAAgDzcDAAJAIAtFDQAgDCALQQEQt4WAgAALAkAgCEUNACANIAhBARC3hYCAAAsCQCAHRQ0AIAIgB0EBELeFgIAACwJAIApFDQAgCSAKQQEQt4WAgAALAkAgBEUNACAFIARBARC3hYCAAAsgAUUNAiAGIAFBARC3hYCAAAwCCwJAIAdFDQAgAiAHQQEQt4WAgAALIApFDQAgCSAKQQEQt4WAgAALAkAgBEUNACAFIARBARC3hYCAAAsgAUUNACAGIAFBARC3hYCAAAsgA0HwAmokgICAgAALwg0FBn8CfgR/AX4DfyOAgICAAEGgAWsiAySAgICAACADIAI2AiwgAyABNgIoIANBCGogA0EoahC7goCAAAJAAkACQAJAAkACQCADKAIIRQ0AIANB3ABqIANBGGopAwA3AgAgA0HUAGogA0EQaikDADcCACADIAMpAwg3AkwMAQsgA0HIAGogAygCDBD2iYCAACADLQBIIgJBOUcNAQsgA0HIAGpBFGooAgAhAiADQcgAakEIaigCACEBIAMoAkwhBCADQQhqIANByABqQRBqIgUoAgAiBiADQcgAakEYaiIHKAIAEJuDgIAAAkACQAJAAkACQAJAAkACQAJAIAMoAggNACAHIANBCGpBGGopAwA3AwAgBSADQQhqQRBqKQMANwMAIAMgAykDEDcDUAwBCyADQShqQRBqIANBCGpBFGooAgA2AgAgA0EoakEIaiADQRRqKQIANwMAIAMgAykCDDcDKCADQcgAaiADQShqEPqJgIAAIAMtAEgiBUE5Rw0BCyADQdwAaiIIKAIAIQUgA0HIAGpBEGooAgAhByADIANB4ABqKAIANgIsIAMgBzYCKCADQQhqIANBKGoQu4KAgAAgAygCCEUNASAIIANBCGpBEGopAwA3AgAgA0HUAGogA0EQaikDADcCACADIAMpAwg3AkwMAgsgACADKABJNgABIAAgAykDaDcDICAAQQRqIAMoAEw2AAAgAEEoaiADQcgAakEoaikDADcDACAAQTBqIANByABqQTBqKQMANwMAIABBOGogA0HIAGpBOGopAwA3AwAgAykDUCEJIAMpA1ghCiAAIAMpA2A3ABggACAKNwAQIAAgCTcACCAAIAU6AAAMCAsgA0HIAGogAygCDBD2iYCAACADLQBIIghBOUcNAQsgA0HIAGpBFGoiCygCACEIIANByABqQQhqKAIAIQwgAygCTCENIANBCGogA0HIAGpBEGooAgAiDiADQeAAaigCABCHgYCAACADKAIIDQEgCyADQQhqQRRqKQIANwIAIANByABqQQxqIANBCGpBDGopAgA3AgAgAyADKQIMNwJMDAILIAAgAy8ASTsAASAAIAMpAmQ3AhwgAEEDaiADLQBLOgAAIABBJGogA0HIAGpBJGopAgA3AgAgAEEsaiADQcgAakEsaikCADcCACAAQTRqIANByABqQTRqKQIANwIAIABBPGogA0HIAGpBPGooAgA2AgAgAykCTCEJIAMpAlQhCiAAIAMpAlw3ABQgACAKNwAMIAAgCTcABCAAIAg6AAAMBAsgA0GIAWpBEGogA0EIakEUaigCADYCACADQYgBakEIaiADQRRqKQIANwMAIAMgAykCDDcDiAEgA0HIAGogA0GIAWoQ+omAgAAgAy0ASCILQTlHDQELIANBO2ogA0HIAGpBFGopAgAiCTcAACADQTNqIANByABqQQxqKQIAIgo3AAAgAyADKQJMIg83ACsgAEEUaiAJNwAAIABBDGogCjcAACAAIA83AAQgAEE5OgAAAkAgDEUNACANIAxBARC3hYCAAAsCQCAIRQ0AIA4gCEEBELeFgIAACwJAIAVFDQAgByAFQQEQt4WAgAALAkAgAUUNACAEIAFBARC3hYCAAAsgAkUNBCAGIAJBARC3hYCAAAwECyAAIAMpAmQ3AhwgA0E/aiIQIANByABqQRhqKAAANgAAIANBOGoiESADQcgAakERaikAADcDACADQTBqIhIgA0HIAGpBCWopAAA3AwAgAEEkaiADQcgAakEkaikCADcCACAAQSxqIANByABqQSxqKQIANwIAIABBNGogA0HIAGpBNGopAgA3AgAgAEE8aiADQcgAakE8aigCADYCACADIAMpAEk3AyggAEEYaiAQKAAANgAAIABBEWogESkDADcAACAAQQlqIBIpAwA3AAAgACADKQMoNwABIAAgCzoAAAJAIAxFDQAgDSAMQQEQt4WAgAALIAhFDQEgDiAIQQEQt4WAgAAMAQsgACADLwBJOwABIAAgAykCZDcCHCAAQQNqIAMtAEs6AAAgAEEkaiADQcgAakEkaikCADcCACAAQSxqIANByABqQSxqKQIANwIAIABBNGogA0HIAGpBNGopAgA3AgAgAEE8aiADQcgAakE8aigCADYCACADKQJMIQkgAykCVCEKIAAgAykCXDcAFCAAIAo3AAwgACAJNwAEIAAgAjoAAAwCCyAFRQ0AIAcgBUEBELeFgIAACwJAIAFFDQAgBCABQQEQt4WAgAALIAJFDQAgBiACQQEQt4WAgAALIANBoAFqJICAgIAAC9YJAgd/AX4jgICAgABB0AFrIgQkgICAgAACQAJAAkACQEEgQQEQtoWAgAAiBUUNACAFQRhqQQApAKy5wIAANwAAIAVBEGpBACkApLnAgAA3AAAgBUEIakEAKQCcucCAADcAACAFQQApAJS5wIAANwAAIAFBwABqKAIAIgYgBUEgIAFBxABqKAIAKAIoIgcRg4CAgAAAIAVBIEEBELeFgIAAIAFBPGooAgAhCCABQThqKAIAIQFBC0EBELaFgIAAIgVFDQEgBUEHakEAKADBwcCAADYAACAFQQApALrBwIAANwAAIARBEGogASAFQQsgCCgCDBGAgICAAAAgBUELQQEQt4WAgAACQAJAAkACQCAEKAIQRQ0AIARB7ABqIARBGGooAgA2AgAgBCAEKQMQNwJkDAELIARBwAFqIAIQr5CAgAAgBEHgAGogBEHAAWoQ8omAgAAgBC0AYCIFQTlHDQELIARBCGoiBSAEQeAAakEMaigCADYCACAEIAQpAmQ3AwAgBEHgAGogA0HgABC8kYCAABogBEHAAWpBCGogBSgCADYCACAEIAQpAwA3A8ABIARBIGogBEHgAGogBEHAAWoQ7oGAgAACQCAELQAgIgVBOUcNACAEQSBqQQxqKAIAIQkgBEEgakEIaigCACEDIAQoAiQhCkE7QQEQtoWAgAAiBUUNBSAFQTdqQQAoAOu5wIAANgAAIAVBMGpBACkA5LnAgAA3AAAgBUEoakEAKQDcucCAADcAACAFQSBqQQApANS5wIAANwAAIAVBGGpBACkAzLnAgAA3AAAgBUEQakEAKQDEucCAADcAACAFQQhqQQApALy5wIAANwAAIAVBACkAtLnAgAA3AAAgBiAFQTsgBxGDgICAAAAgBUE7QQEQt4WAgABBC0EBELaFgIAAIgVFDQYgBUEHakEAKADBwcCAADYAACAFQQApALrBwIAANwAAIAEgBUELIAogCSAIKAIUEYKAgIAAACAFQQtBARC3hYCAAAJAIANFDQAgCiADQQEQt4WAgAALIABBOToAAAwCCyAAIAQvACE7AAEgACAEKQMwNwMQIABBA2ogBC0AIzoAACAAQRhqIARBIGpBGGopAwA3AwAgAEEgaiAEQSBqQSBqKQMANwMAIABBKGogBEEgakEoaikDADcDACAAQTBqIARBIGpBMGopAwA3AwAgAEE4aiAEQSBqQThqKQMANwMAIAQpAiQhCyAAIAQoAiw2AAwgACALNwAEIAAgBToAAAwBCyAAIAQpA3A3AxAgAEEYaiAEQeAAakEYaikDADcDACAAQSBqIARB4ABqQSBqKQMANwMAIABBKGogBEHgAGpBKGopAwA3AwAgAEEwaiAEQeAAakEwaikDADcDACAAQThqIARB4ABqQThqKQMANwMAIAQgBCkAYTcDICAEIARB4ABqQQhqKQAANwAnIABBCGogBCkAJzcAACAAIAQpAyA3AAEgACAFOgAAIANBMGooAgAiAEUNACADKAIsIABBKGxBCBC3hYCAAAsCQCACQQRqKAIAIgBFDQAgAigCACAAQQEQt4WAgAALIARB0AFqJICAgIAADwtBIEEBEKiQgIAAAAtBC0EBEKiQgIAAAAtBO0EBEKiQgIAAAAtBC0EBEKiQgIAAAAuWGAQOfwJ+A38CfiOAgICAAEHwAWsiAySAgICAACADQcgAaiACKAIAIgQgAkEIaigCABC9goCAAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAygCSEUNACADQYwBaiADQdgAaikDADcCACADQYQBaiADQcgAakEIaikDADcCACADIAMpA0g3AnwMAQsgA0H4AGogAygCTBD2iYCAACADLQB4IgVBOUcNAQsgA0GMAWooAgAhBiADQfgAakEIaigCACEHIAMoAnwhCCADQcgAaiADQfgAakEQaigCACIJIANBkAFqKAIAEM2BgIAAAkACQAJAIAMoAlgiCkUNACADKAJsIQUgAygCaCELIAMoAmQhDCADKAJcIQ0MAQsgA0G4AWpBEGogA0HsAGooAgA2AgAgA0G4AWpBCGogA0HkAGopAgA3AwAgAyADKQJcNwO4ASADQZGAgIAANgLUASADIANBuAFqNgLQASADQQE2AowBIANCATcCfCADQdS7wIAANgJ4IAMgA0HQAWo2AogBIANB4AFqIANB+ABqEK2QgIAAIANB+ABqIANB4AFqEPSJgIAAAkAgAygCuAENACADQcABaigCACIFRQ0AIAMoArwBIAVBARC3hYCAAAsgA0HIAWoQkY2AgAAgAyADKAB5NgJAIAMgAygAfDYAQyADKAKQASEKIAMoApQBIQ0gAygCnAEhDCADKAKgASELIAMoAqQBIQUgAy0AeCIOQTlHDQELQShBARC2hYCAACIORQ0CIA5BIGpBACkAuovAgAA3AAAgDkEYakEAKQCyi8CAADcAACAOQRBqQQApAKqLwIAANwAAIA5BCGpBACkAoovAgAA3AAAgDkEAKQCai8CAADcAACADQcgAaiABEMWAgIAAIAMoAkhBBEcNAyADQYwBaiADQdQAaigCADYCACADIAMpAkw3AoQBIANCqICAgIAFNwJ8IAMgDjYCeCADQcgAaiADQfgAahC6goCAAAJAIA1FDQAgCiANQQEQt4WAgAALIAMoAlAhDiADKAJMIQ8gAygCSCEQAkAgAygCfCINRQ0AIAMoAnggDUEBELeFgIAACwJAIANBiAFqKAIAIg1FDQAgAygChAEgDUEBELeFgIAACyADQTBqIAE1AiggATUCJBCmi4CAACADKQM4IREgAykDMCESQQEhCkElQQEQtoWAgAAiDUUNBCANQR1qQQApAMmtwIAANwAAIA1BGGpBACkAxK3AgAA3AAAgDUEQakEAKQC8rcCAADcAACANQQhqQQApALStwIAANwAAIA1BACkArK3AgAA3AAACQCAORQ0AIA5Bf0oiE0UNBiAOIBMQtoWAgAAiCkUNBwsgCiAQIA4QvJGAgAAhCgJAAkAgBQ0AQQEhEwwBCyAFQX9KIhRFDQYgBSAUELaFgIAAIhNFDQgLIBMgDCAFELyRgIAAIRMgA0GkAWogBTYCACADQaABaiAFNgIAIANBmAFqIA42AgAgA0GUAWoiFCAONgIAIAMgEzYCnAEgAyAKNgKQASADQSBqIBIgERCwioCAACADQgE3A3ggAyADKQMoNwOIASADIAMpAyA3A4ABIANB+ABqEOiBgIAAIQoCQCAUKAIAIhNFDQAgAygCkAEgE0EBELeFgIAACwJAIAMoAqABIhNFDQAgAygCnAEgE0EBELeFgIAAC0EBIRRBASETAkAgCkUNACAKQX9KIhVFDQYgCiAVELaFgIAAIhNFDQkLIANBADYC6AEgAyAKNgLkASADIBM2AuABAkAgDkUNACAOQQEQtoWAgAAiFEUNCgsgFCAQIA4QvJGAgAAhCgJAAkAgBQ0AQQEhEwwBCyAFQQEQtoWAgAAiE0UNCwsgEyAMIAUQvJGAgAAhEyADQaQBaiAFNgIAIANBoAFqIAU2AgAgA0GYAWogDjYCACADQZQBaiAONgIAIAMgEzYCnAEgAyAKNgKQASADQRBqIBIgERCwioCAACADQgE3A3ggAyADKQMYNwOIASADIAMpAxA3A4ABAkAgA0H4AGoQ6IGAgAAiBSADKALoAUH/////B3MiDksNACADKAKYAQ0MDA4LIANBCGogBSAOELmNgIAAIANByABqIAMoAgggAygCDBDljICAACADKAJIIQUCQCADKAKUASIORQ0AIAMoApABIA5BARC3hYCAAAsCQCADKAKgASIORQ0AIAMoApwBIA5BARC3hYCAAAsgA0G4AWpBCGogA0HgAWpBCGooAgA2AgAgAyADKQPgATcDuAEgBUEERw0MDA4LIAMpA4ABIREgAykDiAEhEiADKAKYASEQIAMpA6gBIRYgAykDsAEhFyAAIAMoAkA2AAEgAEEEaiADKABDNgAAIAAgFjcAMCAAIAU2ACwgACALNgAoIAAgDDYAJCAAIBA2ACAgACANNgAcIAAgCjYAGCAAIBI3ABAgACARNwAIIAAgFzcDOCAAIA46AAACQCAHRQ0AIAggB0EBELeFgIAACyAGRQ0OIAkgBkEBELeFgIAADA4LIAAgAy8AeTsAASAAIAMpApQBNwIcIABBA2ogAy0AezoAACAAQSRqIANB+ABqQSRqKQIANwIAIABBLGogA0H4AGpBLGopAgA3AgAgAEE0aiADQfgAakE0aikCADcCACAAQTxqIANB+ABqQTxqKAIANgIAIAMpAnwhESADKQKEASESIAAgAykCjAE3ABQgACASNwAMIAAgETcABCAAIAU6AAAMDQtBKEEBEKiQgIAAAAsgA0H4AGpBEGogA0HIAGpBEGooAgA2AgAgA0H4AGpBCGogA0HIAGpBCGopAwA3AwAgAyADKQNINwN4QcKLwIAAQSsgA0H4AGpB8IvAgABBgIzAgAAQ2pCAgAAAC0ElQQEQqJCAgAAACxCpkICAAAALIA4gExCokICAAAALIAUgFBCokICAAAALIAogFRCokICAAAALIA5BARCokICAAAALIAVBARCokICAAAALQQEgA0GQAWogA0HgAWoQiIWAgAAMAQsgA0HQAWpBCGoiDiADQcgAakEMaigCADYCACADIAMpAkw3A9ABIAMoAlghACADQbgBahC+gICAACADQfgAakEMaiAOKAIANgIAIAMgBTYCeCADIAMpA9ABNwJ8IAMgADYCiAFB0a3AgABBxQAgA0H4AGpBmK7AgABB7K7AgAAQ2pCAgAAACwJAIAMoAqQBRQ0AQQIgA0GcAWogA0HgAWoQiIWAgAALAkAgAykDeEIBUg0AAkAgAygC5AEgAygC6AEiBUcNACADQeABaiAFQQEQuoCAgAAgAygC6AEhBQsgAygC4AEgBWpBGjoAACADIAVBAWoiBTYC6AFBACEOIAMpA4gBIRFBACEKAkAgAykDgAEiElANACASQgGEeadBP3NBCWxByQBqQcAPcUEGdkEBaiEKCwJAIBFQDQAgEUIBhHmnQT9zQQlsQckAakHAD3FBBnZBAWohDgsgDiAKaiEOAkAgAygC5AEgBUcNACADQeABaiAFQQEQuoCAgAAgAygC6AEhBQsgAygC4AEgBWogDjoAACADIAVBAWo2AugBAkAgAykDgAFQDQBBASADQYABaiADQeABahCpgYCAAAsgAykDiAFQDQBBAiADQYgBaiADQeABahCpgYCAAAsCQCADKAKUASIFRQ0AIAMoApABIAVBARC3hYCAAAsgAygCoAEiBUUNACADKAKcASAFQQEQt4WAgAALIANBjAFqIANB6AFqKAIANgIAIAMgAykD4AE3AoQBIANCpYCAgNAENwJ8IAMgDTYCeCAAQQRqIANB+ABqELqCgIAAAkAgAygCfCIFRQ0AIAMoAnggBUEBELeFgIAACwJAIANBiAFqKAIAIgVFDQAgAygChAEgBUEBELeFgIAACyAAQTk6AAACQCAPRQ0AIBAgD0EBELeFgIAACwJAIAtFDQAgDCALQQEQt4WAgAALAkAgB0UNACAIIAdBARC3hYCAAAsgBkUNACAJIAZBARC3hYCAAAsCQCACQQRqKAIAIgVFDQAgBCAFQQEQt4WAgAALAkAgAUEwaigCACIFRQ0AIAEoAiwgBUEobEEIELeFgIAACyADQfABaiSAgICAAAvnBAEFfyOAgICAAEHgAGsiBiSAgICAACAGIAQ3AwggBiADNwMAIAZB3ABqQbKAgIAANgIAIAZBt4CAgAA2AlQgBiACNgJQIAYgBjYCWCAGQQI2AkwgBkICNwI8IAZBsLrAgAA2AjggBiAGQdAAajYCSCAGQShqIAZBOGoQrZCAgAAgAUHAAGooAgAiByAGKAIoIgggBigCMCABQcQAaigCACgCKCIJEYOAgIAAAAJAIAYoAiwiCkUNACAIIApBARC3hYCAAAsgBkE4akEQaiAFQRBqKQIANwMAIAZBOGpBCGoiCCAFQQhqKQIANwMAIAYgBSkCADcDOCAGQRBqIAZBOGoQ8IGAgAAgBkHQAGogBigCECAGKAIYQaTewIAAEM6OgIAAIAggBkHQAGpBCGopAwA3AwAgBiAGKQNQNwM4IAZBKGogBkE4ahDMhICAACAGQbOAgIAANgIkIAYgBkEoajYCICAGQQE2AkwgBkIBNwI8IAZBhLvAgAA2AjggBiAGQSBqNgJIIAZB0ABqIAZBOGoQrZCAgAACQCAGKAIsIgVFDQAgBigCKCAFQQEQt4WAgAALIAYoAlQhBSAHIAYoAlAiCCAGKAJYIAkRg4CAgAAAAkAgBUUNACAIIAVBARC3hYCAAAsgBiABQThqKQMANwNQIAYpAwAhBCAGKQMIIQMgBkE4akEIaiAGQRBqQQhqKAIANgIAIAYgBikDEDcDOCAGQdAAaiAEIAMgBkE4ahDUgoCAACAAQTk6AAACQCACQQRqKAIAIgFFDQAgAigCACABQQEQt4WAgAALIAZB4ABqJICAgIAAC9kCAwF/AX4BfyOAgICAAEHQAGsiAiSAgICAACACQThqIAEQ2IeAgAAgAkEYaiACQThqELqCgIAAIAJBKGogARDZh4CAACACQShqEJqLgIAAIQMgAkEQaiACQSBqKAIANgIAIAJBATYCFCACIAM3AwAgAiACKQMYNwMIAkAgAigCPCIERQ0AIAIoAjggBEEBELeFgIAACwJAIAJBOGpBEGooAgAiBEUNACACKAJEIARBARC3hYCAAAsgAkE4aiACEJGDgIAAIAAgAkE4ahC6goCAAAJAIAJBDGooAgAiAEUNACACKAIIIABBARC3hYCAAAsCQCACKAI8IgBFDQAgAigCOCAAQQEQt4WAgAALAkAgAkE4akEQaigCACIARQ0AIAIoAkQgAEEBELeFgIAACwJAIAFBEGooAgAiAEUNACABKAIMIABBARC3hYCAAAsgAkHQAGokgICAgAAL1QsCDH8DfiOAgICAAEGAAWsiAySAgICAAAJAAkAgAkUNACADQeAAakH0u8CAACAAQThqKAIAIgQgAEE8aigCACIFEIOBgIAAAkACQCADKAJgQQ1HDQAgA0EIaiADQewAaigCADYCACADIAMpAmQ3AwAMAQsgA0EANgIIIANCATcDACADQeAAahDMgYCAAAsCQCADKAIEIAMoAggiBmsgAk8NACADIAYgAhC5gICAAAsgAkEFdCEHIABBxABqKAIAIQggAEHAAGooAgAhCQJAAkACQAJAA0AgA0HgAGpBGGoiBiABQRhqIgopAAA3AwAgA0HgAGpBEGoiCyABQRBqIgwpAAA3AwAgA0HgAGpBCGoiDSABQQhqIg4pAAA3AwAgAyABKQAANwNgAkAgAygCCCICIAMoAgRHDQAgAyACELSAgIAAIAMoAgghAgsgAygCACACQQV0aiIAIAMpA2A3AAAgAEEIaiANKQMANwAAIABBEGogCykDADcAACAAQRhqIAYpAwA3AAAgAyACQQFqNgIIQSBBARC2hYCAACIARQ0BIAAgASkAADcAACAAQQhqIA4pAAA3AAAgAEEQaiAMKQAANwAAIABBGGogCikAADcAACADIAA2AmAgA0KggICAgAQ3AmQgA0EQakGYvMCAACAEIAUgA0HgAGpBjLXAgAAQ34SAgAACQCADKAIQQQ1GDQAgBiADQRBqQRhqKQMANwMAIAsgA0EQakEQaikDADcDACANIANBEGpBCGopAwA3AwAgAyADKQMQNwNgIANBuICAgAA2AkQgAyADQeAAajYCQCADQQE2AlwgA0IBNwJMIANBlL3AgAA2AkggAyADQcAAajYCWCADQTBqIANByABqEK2QgIAAIAkgAygCMCIAIAMoAjggCCgCKBGDgICAAAACQCADKAI0IgJFDQAgACACQQEQt4WAgAALIANB4ABqEMyBgIAACyABQSBqIQEgB0FgaiIHDQALIAMoAggiAUH0A00NAyADQQA2AgggAUGMfGohByABQQV0QYCDf2ohAiADKAIAIQEDQCADQeAAakEYaiIGIAFBGGopAAA3AwAgA0HgAGpBEGoiCyABQRBqKQAANwMAIANB4ABqQQhqIg0gAUEIaikAADcDACADIAEpAAA3A2BBIEEBELaFgIAAIgBFDQIgACADKQNgNwAAIABBGGogBikDADcAACAAQRBqIAspAwA3AAAgAEEIaiANKQMANwAAIANCoICAgIAENwIUIAMgADYCECADQcgAakH8u8CAAEEZIANBEGoQ3oSAgAAgBCADKAJIIgAgAygCUCAFQRhqKAIAEYOAgIAAAAJAIAMoAkwiBkUNACAAIAZBARC3hYCAAAsgAUEgaiEBIAJBYGoiAkUNAwwACwtBIEEBEKiQgIAAAAtBIEEBEKiQgIAAAAsCQCAHIAMoAggiAUYNACADKAIAIgAgAUEFdGogACAHQQV0akGA/QAQwZGAgAAaCyADIAFB9ANqNgIICyADQRBqIAMQlYOAgAACQAJAIAMoAhANACADQeAAakEMaiADQRBqQQxqKAIANgIAIAMgAykCFDcCZAwBCyADQcgAakEIaiADQRxqKAIANgIAIAMgAykCFDcDSCADQeAAakH7ncGAAEEmIANByABqENOEgIAAIAMoAmAiAUENRw0CCyADQegAaigCACEBIARB3LvAgABBFSADKAJkIgAgA0HsAGooAgAgBSgCFBGCgICAAAACQCABRQ0AIAAgAUEBELeFgIAACyADKAIEIgFFDQAgAygCACABQQV0QQEQt4WAgAALIANBgAFqJICAgIAADwsgA0EQakEIaiADQfgAaiIAKQMAIg83AwAgAyADKQNwIhA3AxAgAykCZCERIAMoAmwhAiAAIA83AwAgAyACNgJsIAMgETcCZCADIAE2AmAgAyAQNwNwQaC8wIAAQRogA0HgAGpB9LHAgABB6LzAgAAQ2pCAgAAAC80BAQV/I4CAgIAAQSBrIgIkgICAgAAgAkH0u8CAACAAQThqKAIAIABBPGooAgAQg4GAgAACQAJAIAIoAgBBDUcNACACQQxqKAIAIQAgAkEIaigCACEDIAIoAgQhBAwBCyACEMyBgIAAQQEhBEEAIQBBACEDCyAAQQV0IQVBACEGAkADQCAFIAYiAEYNASAAQSBqIQYgBCAAaiABQSAQupGAgAANAAsLAkAgA0UNACAEIANBBXRBARC3hYCAAAsgAkEgaiSAgICAACAFIABHC7IFAQF/I4CAgIAAQdABayIGJICAgIAAIAYgAzcDECAGIAI3AwggBiAFNgIcIAYgBDYCGCAGIAFBOGopAwA3A7ABIAZBuAFqIAZBsAFqIAIgAyAEIAUQ04KAgAACQAJAIAYoArgBRQ0AIAYgBikDuAEiAzcDYCAGKAJkIQUgBkEgaiADpyIEIAZBuAFqQQhqKAIAEOyBgIAAAkACQCAGLQAgQTlHDQAgACAGKQIkNwIEIABBCzYCACAAQRRqIAZBIGpBFGopAgA3AgAgAEEMaiAGQSBqQQxqKQIANwIADAELIAZB8ABqQThqIAZBIGpBOGopAwA3AwAgBkHwAGpBMGogBkEgakEwaikDADcDACAGQfAAakEoaiAGQSBqQShqKQMANwMAIAZB8ABqQSBqIAZBIGpBIGopAwA3AwAgBkHwAGpBGGogBkEgakEYaikDADcDACAGQfAAakEQaiAGQSBqQRBqKQMANwMAIAZB8ABqQQhqIAZBIGpBCGopAwA3AwAgBiAGKQMgNwNwIAZBuYCAgAA2ArQBIAYgBkHwAGo2ArABIAZBATYCzAEgBkIBNwK8ASAGQfy9wIAANgK4ASAGIAZBsAFqNgLIASAGQeAAaiAGQbgBahCtkICAACAGQfAAahDWgYCAACAAQQM2AgAgACAGKQNgNwIEIABBDGogBkHgAGpBCGooAgA2AgALIAVFDQEgBCAFQQEQt4WAgAAMAQsgBkEsakG6gICAADYCACAGQbuAgIAANgIkIAYgBkEYajYCKCAGIAZBCGo2AiAgBkECNgKEASAGQgI3AnQgBkHMvcCAADYCcCAGIAZBIGo2AoABIAZB4ABqIAZB8ABqEK2QgIAAIAYpA2AhAyAAIAYoAmg2AgwgACADNwIEIABBAzYCAAsgBkHQAWokgICAgAALmwEBAn8jgICAgABBMGsiBiSAgICAACAGQRBqQRBqIANBEGopAgA3AwAgBkEQakEIaiIHIANBCGopAgA3AwAgBiADKQIANwMQIAYgBkEQahDwgYCAACAGIABBOGopAwA3AyggByAGQQhqKAIANgIAIAYgBikDADcDECAGQShqIAEgAiAGQRBqIAQgBRDVgoCAACAGQTBqJICAgIAAC/cEAgF/AX4jgICAgABB4AFrIgQkgICAgAAgBCADNgIMIAQgAjYCCCAEIAFBOGopAwA3A8ABIARBgAFqIARBwAFqIAIgAxCHgoCAAAJAAkAgBCgCgAFFDQAgBCAEKQOAASIFNwPIASAEKALMASEDIARBEGogBaciAiAEQYABakEIaiIBKAIAEOuBgIAAAkACQCAEKQMQQgJRDQAgACAEQRBqQeAAELyRgIAAGgwBCyAEQYABakE4aiAEQdAAaikDADcDACAEQYABakEwaiAEQRBqQThqKQMANwMAIARBgAFqQShqIARBEGpBMGopAwA3AwAgBEGAAWpBIGogBEEQakEoaikDADcDACAEQYABakEYaiAEQRBqQSBqKQMANwMAIARBgAFqQRBqIARBEGpBGGopAwA3AwAgASAEQRBqQRBqKQMANwMAIAQgBCkDGDcDgAEgBEG5gICAADYCxAEgBCAEQYABajYCwAEgBEEBNgLcASAEQgE3AswBIARB0L7AgAA2AsgBIAQgBEHAAWo2AtgBIARB8ABqIARByAFqEK2QgIAAIARBgAFqENaBgIAAIABBAzYCCCAAQQxqIAQpA3A3AgAgAEEUaiAEQfAAakEIaigCADYCACAAQgI3AwALIANFDQEgAiADQQEQt4WAgAAMAQsgBEG6gICAADYCdCAEIARBCGo2AnAgBEEBNgIkIARCATcCFCAEQai+wIAANgIQIAQgBEHwAGo2AiAgBEHIAWogBEEQahCtkICAACAEKQPIASEFIABBFGogBCgC0AE2AgAgAEEMaiAFNwIAIABBAzYCCCAAQgI3AwALIARB4AFqJICAgIAAC4MGAgN/AX4jgICAgABBgAJrIgUkgICAgAAgBSABQTxqKAIAIgY2AgwgBSABQThqKAIAIgc2AgggBUGAAWogBUEIaiADIAQQh4KAgAACQAJAIAUoAoABIgFFDQAgBSkChAEhCCAFQYABaiACQeAAELyRgIAAGiAFIAg3AuwBIAUgATYC6AEgBUHAAGogBUGAAWogBUHoAWoQ7oGAgAACQCAFLQBAQTlHDQAgBUEQakEIaiAFQcwAaigCACIBNgIAIAUgBSkCRCIINwMQIAUgBjYCRCAFIAc2AkAgBUGAAWpBCGogATYCACAFIAg3A4ABIAVBwABqIAVBgAFqIAMgBBCIgoCAACAAQQs2AgAMAgsgBUGAAWpBOGogBUHAAGpBOGopAwA3AwAgBUGAAWpBMGogBUHAAGpBMGopAwA3AwAgBUGAAWpBKGogBUHAAGpBKGopAwA3AwAgBUGAAWpBIGogBUHAAGpBIGopAwA3AwAgBUGAAWpBGGogBUHAAGpBGGopAwA3AwAgBUGAAWpBEGogBUHAAGpBEGopAwA3AwAgBUGAAWpBCGogBUHAAGpBCGopAwA3AwAgBSAFKQNANwOAASAFQbmAgIAANgLkASAFIAVBgAFqNgLgASAFQQE2AvwBIAVCATcC7AEgBUGYv8CAADYC6AEgBSAFQeABajYC+AEgBUEwaiAFQegBahCtkICAACAFQYABahDWgYCAACAFQSBqQQhqIAVBMGpBCGooAgAiATYCACAFIAUpAzAiCDcDICAAQQxqIAE2AgAgACAINwIEIABBAzYCAAwBCwJAQSBBARC2hYCAACIBRQ0AIAFBGGpBACkA8L7AgAA3AAAgAUEQakEAKQDovsCAADcAACABQQhqQQApAOC+wIAANwAAIAFBACkA2L7AgAA3AAAgAEKggICAgAQ3AgggACABNgIEIABBAzYCACACQTBqKAIAIgBFDQEgAigCLCAAQShsQQgQt4WAgAAMAQtBIEEBEKiQgIAAAAsgBUGAAmokgICAgAALpxUDAn8Bfgt/I4CAgIAAQeACayIDJICAgIAAEJaGgIAAIANBOGogABCphoCAACADQcgAaiABEKmGgIAAIANB2ABqIAIQqYaAgAAgA0HwAWogAygCOCIEIAMoAkAQ1IOAgAACQAJAAkACQAJAAkAgAygCkAJBAkcNACADQQhqQQhqIANB8AFqQQhqKQMANwMAIAMgAykD8AE3AwggA0GIAWpBx5/BgABBGCADQQhqENSEgIAADAELIANBiAFqQTBqIANB8AFqQTBqKQMANwMAIANBiAFqQShqIANB8AFqQShqKQMANwMAIANBiAFqQRhqIANB8AFqQRhqKQMANwMAIANBiAFqQRBqIANB8AFqQRBqKQMANwMAIANBiAFqQQhqIgAgA0HwAWpBCGopAwA3AwAgA0GIAWpBIGoiASADQfABakEgaikDACIFNwMAIAMgAykD8AE3A4gBIAWnQQJGDQAgA0H4AGpBCGogACkDADcDACADQegAakEIaiABKQMANwMAIAMgAykDiAE3A3ggAyADKQOgATcDaCADKAKYASEGIAMoApwBIQcgAygCsAEhCCADKAK0ASEJIAMpA7gBIQUgA0HwAWogAygCSCIKIAMoAlAQ1oOAgAACQAJAAkACQAJAAkACQCADKALwAUUNACADQdQBaiADQYACaikDADcCACADQcwBaiADQfgBaikDADcCACADIAMpA/ABNwLEAQwBCyADQYgBakEIaiIAIANB/AFqKQIANwMAIAMgAykC9AE3A4gBIANBwAFqQeGgwYAAQSAgA0GIAWoQ1ISAgAAgAygCwAFBDUcNAQsgA0HYAWooAgAhASADQdQBaigCACELIANB0AFqKAIAIQwgA0HAAWpBDGooAgAhDSADQcABakEIaigCACECIAMoAsQBIQ4gA0GIAWogAygCWCIPIAMoAmAQhYeAgAAgA0HwAWogA0GIAWpBvLXBgABBDkGEs8GAAEEAEN2DgIAAAkACQAJAIAMoAvABIgBBFUcNACADQfABaiADQYgBahCHh4CAACADKALwASIAQRVGDQIgA0EQaiADQfwBaigCADYCACADIAMpAvQBNwMIDAELIANBCGpBCGogA0HwAWpBDGooAgA2AgAgAyADKQL0ATcDCAsgA0H8AWogA0EIakEIaigCADYCACADIAA2AvABIAMgAykDCDcC9AEgA0HAAWpBrZ3BgABBJSADQfABahDUhICAACADKALAAUENRw0CCxDdhoCAABDdhoCAABDdhoCAACADQbwCakGA1sCAADYCACADQbQCakHU1cCAADYCACADQawCakG41cCAADYCACADQfABakEIaiIAIANB+ABqQQhqKQMANwMAIANB8AFqQSBqIhAgA0HoAGpBCGopAwA3AwAgA0HUAmogATYCACADQdACaiALNgIAIANBzAJqIAw2AgAgA0HIAmogDTYCACADQcQCaiACNgIAIANBuAJqIANB2AJqNgIAIANBsAJqIANB2AJqNgIAIAMgAykDeDcD8AEgAyAHNgKEAiADIAY2AoACIAMgAykDaDcDiAIgAyAONgLAAiADIAU3A6ACIAMgCTYCnAIgAyAINgKYAiADIANB2AJqNgKoAiADQYgBaiADQagCaiADQfABaiADQcACahDRg4CAACADQfABakEoaiADQYgBakEoaikDADcDACAQIANBiAFqQSBqKQMANwMAIANB8AFqQRhqIANBiAFqQRhqKQMANwMAIANB8AFqQRBqIANBiAFqQRBqKQMANwMAIAAgA0GIAWpBCGopAwA3AwAgAyADKQOIATcD8AEgA0EIaiADQfABahDbhICAAAJAIAMoAlwiAEUNACAPIABBARC3hYCAAAsCQCADKAJMIgBFDQAgCiAAQQEQt4WAgAALIAMoAjwiAEUNByAEIABBARC3hYCAAAwHCyADQYgBakEYaiADQcABakEYaikDADcDACADQYgBakEQaiADQcABakEQaikDADcDACAAIANBwAFqQQhqKQMANwMAIAMgAykDwAE3A4gBIANBADYC6AEgA0IBNwPgASADQfABaiADQeABakHQs8CAABDskICAACADQYgBaiADQfABahC/hoCAAA0BIANBFGogA0HoAWooAgA2AgAgAyADKQPgATcCDCADQQA2AgggA0GIAWoQzIGAgAAMAwsgA0GIAWpBGGogA0HAAWpBGGopAwA3AwAgA0GIAWpBEGogA0HAAWpBEGopAwA3AwAgA0GIAWpBCGogA0HAAWpBCGopAwA3AwAgAyADKQPAATcDiAEgA0EANgLoASADQgE3A+ABIANB8AFqIANB4AFqQdCzwIAAEOyQgIAAIANBiAFqIANB8AFqEL+GgIAADQEgA0EUaiADQegBaigCADYCACADIAMpA+ABNwIMIANBADYCCCADQYgBahDMgYCAAAJAIAJFDQAgDiACQQEQt4WAgAALAkAgAUUNACABQQV0IQEgDEEQaiEAA0ACQCAAQQRqKAIAIgJFDQAgACgCACACQQEQt4WAgAALIABBIGohACABQWBqIgENAAsLIAtFDQIgDCALQQV0QQgQt4WAgAAMAgtB6LPAgABBNyADQdgCakGgtMCAAEH8tMCAABDakICAAAALQeizwIAAQTcgA0HYAmpBoLTAgABB/LTAgAAQ2pCAgAAACwJAIAdFDQAgBiAHQQEQt4WAgAALIAlFDQEgCCAJQQEQt4WAgAAMAQsgA0HAAWpBGGogA0GIAWpBGGopAwA3AwAgA0HAAWpBEGogA0GIAWpBEGopAwA3AwAgA0HAAWpBCGogA0GIAWpBCGopAwA3AwAgAyADKQOIATcDwAEgA0EANgLoASADQgE3A+ABIANB8AFqIANB4AFqQdCzwIAAEOyQgIAAIANBwAFqIANB8AFqEL+GgIAADQIgA0EUaiADQeABakEIaigCADYCACADIAMpA+ABNwIMIANBADYCCCADQcABahDMgYCAAAsCQCADKAJcIgBFDQAgAygCWCAAQQEQt4WAgAALAkAgAygCTCIARQ0AIAMoAkggAEEBELeFgIAACyADKAI8IgBFDQAgBCAAQQEQt4WAgAALIANB8AFqIANBCGoQloOAgAACQAJAIAMoAvABDQAgA0GIAWpBDGogA0HwAWpBDGooAgA2AgAgAyADKQL0ATcCjAEMAQsgA0HAAWpBCGogA0H8AWooAgA2AgAgAyADKQL0ATcDwAEgA0GIAWpBoZ7BgABB4QAgA0HAAWoQ04SAgAAgAygCiAFBDUcNAgsgA0HAAWpBCGogA0GUAWooAgAiADYCACADIAMpAowBIgU3A8ABIANB8AFqQQhqIAA2AgAgAyAFNwPwASADQfABahCohoCAACEAIANBCGoQ24GAgAAgA0HgAmokgICAgAAgAA8LQeizwIAAQTcgA0HYAmpBoLTAgABB/LTAgAAQ2pCAgAAACyADQfABakEYaiADQYgBakEYaikDADcDACADQfABakEQaiADQYgBakEQaikDADcDACADQfABakEIaiADQYgBakEIaikDADcDACADIAMpA4gBNwPwAUHIscCAAEErIANB8AFqQfSxwIAAQfSywIAAENqQgIAAAAvoFAMCfwF+C38jgICAgABB4ARrIgMkgICAgAAQloaAgAAgA0E4aiAAEKmGgIAAIANByABqIAEQqYaAgAAgA0HYAGogAhCphoCAACADQYgDaiADKAI4IgQgAygCQBDUg4CAAAJAAkACQAJAAkACQCADKAKoA0ECRw0AIANBiAFqQQhqIANBiANqQQhqKQMANwMAIAMgAykDiAM3A4gBIANB8AFqQcefwYAAQRggA0GIAWoQ1ISAgAAMAQsgA0HwAWpBMGogA0GIA2pBMGopAwA3AwAgA0HwAWpBKGogA0GIA2pBKGopAwA3AwAgA0HwAWpBGGogA0GIA2pBGGopAwA3AwAgA0HwAWpBEGogA0GIA2pBEGopAwA3AwAgA0HwAWpBCGoiACADQYgDakEIaikDADcDACADQfABakEgaiIBIANBiANqQSBqKQMAIgU3AwAgAyADKQOIAzcD8AEgBadBAkYNACADQfgAakEIaiAAKQMANwMAIANB6ABqQQhqIAEpAwA3AwAgAyADKQPwATcDeCADIAMpA4gCNwNoIAMoAoACIQYgAygChAIhByADKAKYAiEIIAMoApwCIQkgAykDoAIhBSADQYgDaiADKAJIIgogAygCUBDWg4CAAAJAAkACQAJAAkACQAJAAkACQCADKAKIA0UNACADQZwBaiADQZgDaikDADcCACADQZQBaiADQZADaikDADcCACADIAMpA4gDNwKMAQwBCyADQfABakEIaiIAIANBlANqKQIANwMAIAMgAykCjAM3A/ABIANBiAFqQeGgwYAAQSAgA0HwAWoQ1ISAgAAgAygCiAFBDUcNAQsgA0GgAWooAgAhACADQZwBaigCACELIANBiAFqQRBqKAIAIQwgA0GUAWooAgAhDSADQYgBakEIaigCACEBIAMoAowBIQIgA0GIA2ogAygCWCIOIAMoAmAQ2oOAgAAgAykDiANCClINASADQQhqQQhqIANBiANqQRBqKQMANwMAIAMgAykDkAM3AwggA0HwAWpBCGpBpp/BgABBISADQQhqENSEgIAADAILIANB8AFqQRhqIANBiAFqQRhqKQMANwMAIANB8AFqQRBqIANBiAFqQRBqKQMANwMAIAAgA0GIAWpBCGopAwA3AwAgAyADKQOIATcD8AEgA0EANgLgAiADQgE3A9gCIANBiANqIANB2AJqQdCzwIAAEOyQgIAAIANB8AFqIANBiANqEL+GgIAADQIgA0EUaiADQeACaigCADYCACADIAMpA9gCNwIMIANBADYCCCADQfABahDMgYCAAAwFCyADQfABaiADQYgDakHoABC8kYCAABogAykD8AFCClINAwsgA0HYAmpBGGogA0GQAmopAwA3AwAgA0HYAmpBEGogA0HwAWpBGGopAwA3AwAgA0HYAmpBCGogA0HwAWpBEGopAwA3AwAgAyADKQP4ATcD2AIgA0EANgKAAyADQgE3A/gCIANBiANqIANB+AJqQdCzwIAAEOyQgIAAIANB2AJqIANBiANqEL+GgIAADQEgA0EUaiADQfgCakEIaigCADYCACADIAMpA/gCNwIMIANBADYCCCADQdgCahDMgYCAAAJAIAFFDQAgAiABQQEQt4WAgAALAkAgAEUNACAAQQV0IQEgDEEQaiEAA0ACQCAAQQRqKAIAIgJFDQAgACgCACACQQEQt4WAgAALIABBIGohACABQWBqIgENAAsLIAtFDQMgDCALQQV0QQgQt4WAgAAMAwtB6LPAgABBNyADQdgEakGgtMCAAEH8tMCAABDakICAAAALQeizwIAAQTcgA0HYBGpBoLTAgABB/LTAgAAQ2pCAgAAACyADQYgBaiADQfABakHoABC8kYCAABoQ3YaAgAAQ3YaAgAAQ3YaAgAAgA0HUA2pBgNbAgAA2AgAgA0HMA2pB1NXAgAA2AgAgA0HEA2pBuNXAgAA2AgAgA0GIA2pBCGoiDyADQfgAakEIaikDADcDACADQYgDakEgaiIQIANB6ABqQQhqKQMANwMAIANB7ANqIAA2AgAgA0HoA2ogCzYCACADQeQDaiAMNgIAIANB4ANqIA02AgAgA0HcA2ogATYCACADQdADaiADQdgEajYCACADQcgDaiADQdgEajYCACADIAMpA3g3A4gDIAMgBzYCnAMgAyAGNgKYAyADIAMpA2g3A6ADIAMgAjYC2AMgAyAFNwO4AyADIAk2ArQDIAMgCDYCsAMgAyADQdgEajYCwAMgA0HwAWogA0HAA2ogA0GIA2ogA0HYA2ogA0GIA2pB6ABqIANBiAFqQegAELyRgIAAENKDgIAAIANBiANqQShqIANB8AFqQShqKQMANwMAIBAgA0HwAWpBIGopAwA3AwAgA0GIA2pBGGogA0HwAWpBGGopAwA3AwAgA0GIA2pBEGogA0HwAWpBEGopAwA3AwAgDyADQfABakEIaikDADcDACADIAMpA/ABNwOIAyADQQhqIANBiANqENuEgIAAAkAgAygCXCIARQ0AIA4gAEEBELeFgIAACwJAIAMoAkwiAEUNACAKIABBARC3hYCAAAsgAygCPCIARQ0DIAQgAEEBELeFgIAADAMLAkAgB0UNACAGIAdBARC3hYCAAAsgCUUNASAIIAlBARC3hYCAAAwBCyADQYgBakEYaiADQfABakEYaikDADcDACADQYgBakEQaiADQfABakEQaikDADcDACADQYgBakEIaiADQfABakEIaikDADcDACADIAMpA/ABNwOIASADQQA2AuACIANCATcD2AIgA0GIA2ogA0HYAmpB0LPAgAAQ7JCAgAAgA0GIAWogA0GIA2oQv4aAgAANAiADQRRqIANB2AJqQQhqKAIANgIAIAMgAykD2AI3AgwgA0EANgIIIANBiAFqEMyBgIAACwJAIAMoAlwiAEUNACADKAJYIABBARC3hYCAAAsCQCADKAJMIgBFDQAgAygCSCAAQQEQt4WAgAALIAMoAjwiAEUNACAEIABBARC3hYCAAAsgA0GIA2ogA0EIahCWg4CAAAJAAkAgAygCiAMNACADQfABakEMaiADQYgDakEMaigCADYCACADIAMpAowDNwL0AQwBCyADQYgBakEIaiADQZQDaigCADYCACADIAMpAowDNwOIASADQfABakGhnsGAAEHhACADQYgBahDThICAACADKALwAUENRw0CCyADQYgBakEIaiADQfwBaigCACIANgIAIAMgAykC9AEiBTcDiAEgA0GIA2pBCGogADYCACADIAU3A4gDIANBiANqEKiGgIAAIQAgA0EIahDbgYCAACADQeAEaiSAgICAACAADwtB6LPAgABBNyADQdgEakGgtMCAAEH8tMCAABDakICAAAALIANBiANqQRhqIANB8AFqQRhqKQMANwMAIANBiANqQRBqIANB8AFqQRBqKQMANwMAIANBiANqQQhqIANB8AFqQQhqKQMANwMAIAMgAykD8AE3A4gDQcixwIAAQSsgA0GIA2pB9LHAgABB5LLAgAAQ2pCAgAAAC/gBAQR/I4CAgIAAQTBrIgIkgICAgAAgASgCBCEDIAEoAgAhBAJAAkACQCABKAIIIgVFDQAgBCAFELaCgIAAQYwBQQQQtoWAgAAiAUUNAiABQQA7AYoBIAFBADYCACACIAE2AgQgAkEANgIAIAJBADYCDCACQQA2AiAgAiAEIAVBDGxqNgIcIAIgBDYCGCACIAM2AhQgAiAENgIQIAIgAkEQaiACQQxqEJ6AgIAAIAAgAigCDDYCCCAAIAIpAwA3AgAMAQsgAEIANwIEIANFDQAgBCADQQxsQQQQt4WAgAALIAJBMGokgICAgAAPC0GMAUEEEKiQgIAAAAuiAwEGfyOAgICAAEHQAGsiAySAgICAACACIAFrQfAAbiEEAkACQAJAAkAgAiABRw0AIABCADcCBAwBCyAEQQV0IgVBARC2hYCAACIGRQ0BQQAhByAGIQUgASEIA0AgA0EYaiAIEMeBgIAAIAVBGGogA0EYakEYaikAADcAACAFQRBqIANBGGpBEGopAAA3AAAgBUEIaiADQRhqQQhqKQAANwAAIAUgAykAGDcAACAHQX9qIQcgBUEgaiEFIAhB8ABqIgggAkcNAAsCQCAHRQ0AIAZBACAHaxC0goCAAEHoAkEEELaFgIAAIghFDQMgCEEAOwEGIAhBADYCACADIAg2AgwgA0EANgIIIANBADYCFCADQQI6ACggAyAFNgIkIAMgBjYCICADIAQ2AhwgAyAGNgIYIANBCGogA0EYaiADQRRqEJ2AgIAAIAAgAygCFDYCCCAAIAMpAwg3AgAMAQsgAEIANwIEIAIgAUYNACAGIARBBXRBARC3hYCAAAsgA0HQAGokgICAgAAPCyAFQQEQqJCAgAAAC0HoAkEEEKiQgIAAAAu/AgECfyOAgICAAEHQAGsiAiSAgICAACACQTBqEPWGgIAAIAJBwABqIAEgAkEwahCrhYCAAAJAAkACQCACKAJARQ0AIAJBIGpBCGoiASACQcwAaigCADYCACACIAIpAkQ3AyACQCACKAI0IgNFDQAgAigCMCADQQEQt4WAgAALIAJBwABqQQhqIAEoAgA2AgAgAiACKQMgNwNAIAJBiJ3BgABBJSACQcAAahDThICAACACKAIAQQ1GDQEgACACKQMANwMAIABBGGogAkEYaikDADcDACAAQRBqIAJBEGopAwA3AwAgAEEIaiACQQhqKQMANwMADAILIAJBDGogAkE4aigCADYCACACIAIpAzA3AgQLIAAgAikCBDcCBCAAQQ02AgAgAEEMaiACQQxqKAIANgIACyACQdAAaiSAgICAAAtcAQF/AkBBEEEEELaFgIAAIgQNAEEQQQQQqJCAgAAACyAAQQA2AgQgACAENgIAIAQgASkCADcCACAAQQxqIAM2AgAgAEEIaiACNgIAIARBCGogAUEIaikCADcCAAt+AQF/I4CAgIAAQTBrIgIkgICAgAAgAkEcakEBNgIAIAJCAjcCDCACQazAwIAANgIIIAJBjYCAgAA2AiQgAkEpNgIsIAJB0p3BgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQTBqJICAgIAAIAELDwAgACgCACABENyOgIAACxIAIAAoAgAoAgAgARDsgICAAAsCAAt2AQF/I4CAgIAAQSBrIgUkgICAgAAgBSACNgIEIAUgATYCACAFQQhqQRBqIANBEGopAgA3AwAgBUEIakEIaiADQQhqKQIANwMAIAUgAykCADcDCCAAIAVB4L/AgAAgBUEEakHgv8CAACAFQQhqIAQQ15CAgAAAC0kBAn8CQCAAKAIAIgFBf0YNACAAKAIEIQIgASABKAIEIgBBf2o2AgQgAEEBRw0AIAJBC2pBfHEiAEUNACABIABBBBC3hYCAAAsL8wMCAn4FfyAAQQN0QQJyIgCtIQMCQAJAIABB/wBLDQAgAigCCCEADAELIAIoAgghACADIQQDQCAEp0GAf3IhBQJAAkAgAigCBCAARg0AIAAhBgwBCyACIABBARC6gICAACACKAIIIQYLIAIgBkEBaiIANgIIIAIoAgAgBmogBToAACAEQv//AFYhBiAEQgeIIgMhBCAGDQALCyADpyEFAkAgAigCBCAARw0AIAIgAEEBELqAgIAAIAIoAgghAAsgAiAAQQFqIgY2AgggAigCACIHIABqIAU6AAAgAUEIaigCACIIrSEEAkACQCAIQYABTw0AIAQhAwwBCwNAIASnQYB/ciEFAkACQCACKAIEIAZGDQAgBiEADAELIAIgBkEBELqAgIAAIAIoAgAhByACKAIIIQALIAIgAEEBaiIGNgIIIAcgAGogBToAACAEQv//AFYhACAEQgeIIgMhBCAADQALCyADpyEJAkAgAigCBCIFIAZHDQAgAiAGQQEQuoCAgAAgAigCBCEFIAIoAgghBgsgAiAGQQFqIgA2AgggAigCACIHIAZqIAk6AAAgASgCACEGAkAgBSAAayAITw0AIAIgACAIELqAgIAAIAIoAgAhByACKAIIIQALIAcgAGogBiAIELyR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ahD+goCAACAHIAMpA3A3AgAgB0EIaiADQfAAakEIaigCADYCACADIAs2AgAgA0GAAmogA0HwABC8kYCAABogA0HwAGogA0GAAmoQx4GAgAAgBiADQYACakHwABC8kYCAABogBEEBaiEEIAIgA0HwAGpBkAEQvJGAgABBkAFqIQIgAEHwAGoiACABRw0ACwsgBSAENgIAIANB8AJqJICAgIAAC7MBAgN/AX4CQCAAIAFGDQADQEEAIQNBACEEAkAgAEEQaigCAEUNACAAQQhqIgUQvo2AgAAhBCAFEL6NgIAAIARBAXJnQR9zQQlsQckAakEGdmpBAWohBAsgAEEYaiEFAkAgACkDACIGUA0AIAZCAYR5p0E/c0EJbEHJAGpBBnZBAWohAwsgAyAEaiIAIAJqIABBAXJnQR9zQQlsQckAakEGdmohAiAFIQAgBSABRw0ACwsgAguZAwMHfwV+An8jgICAgABB0ABrIgIkgICAgAAgASgCCCEDIAEoAgQhBCAAKAIEIQUgACgCACEGAkACQAJAIAAoAggiByAAKAIMIghGDQAgASgCACEAA0AgBykDICEJIAJBEGpBGGogB0EYaikDACIKNwMAIAJBEGpBEGogB0EQaikDACILNwMAIAJBEGpBCGogB0EIaikDACIMNwMAIAIgBykDACINNwMQIAJBMGpBGGogCjcDACACQTBqQRBqIAs3AwAgAkEwakEIaiAMNwMAIAIgDTcDMCACQQhqIAJBMGoQ8o2AgAAgAigCCCEOQQEhDwJAIAIoAgwiAUUNACABQX9MDQMgAUEBELaFgIAAIg9FDQQLIA8gDiABELyRgIAAIQ8gACABNgIQIAAgATYCDCAAIA82AgggACAJNwMAIABBGGohACADQQFqIQMgB0EoaiIHIAhHDQALCyAEIAM2AgACQCAFRQ0AIAYgBUEobEEIELeFgIAACyACQdAAaiSAgICAAA8LEKmQgIAAAAsgAUEBEKiQgIAAAAukBQERfyOAgICAAEHwAGsiAySAgICAAEEAIQQCQCAAKAIAIgUgACgCBCIGRg0AIAAoAggiB0EQIAdBEEsbIQggB0EkbCAAKAIMakEIaiEJIANByABqQQhqIQogA0HIAGpBAXIhCwJAAkADQCAAIAVBDGoiDDYCAAJAAkACQCAFKAIAQQJGDQAgA0HIAGogBRCu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IAJBAUcNASABEIKCgIAADwsCQCAAKAIAIgFBKUkNACAAKAIEIAFBARC3hYCAAAsCQAJAIAAtADAiAUEDcUEDRg0AIAEOAwEAAQELIABBNGoiASgCABCNgoCAACABKAIAQZwFQQQQt4WAgAALAkACQCAAQdQAai0AACIBQQNxQQNGDQAgAQ4DAQABAQsgAEHYAGoiASgCABCNgoCAACABKAIAQZwFQQQQt4WAgAALAkACQCAAQfgAai0AACIBQQNxQQNGDQAgAQ4DAQABAQsgAEH8AGoiASgCABCNgoCAACABKAIAQZwFQQQQt4WAgAALAkACQCAAQZwBai0AACIBQQNxQQNGDQAgAQ4DAQABAQsgAEGgAWoiASgCABCNgoCAACABKAIAQZwFQQQQt4WAgAALAkACQCAAQcABai0AACIBQQNxQQNGDQAgAQ4DAQABAQsgAEHEAWoiASgCABCNgoCAACABKAIAQZwFQQQQt4WAgAALAkACQCAAQeQBai0AACIBQQNxQQNGDQAgAQ4DAQABAQsgAEHoAWoiASgCABCNgoCAACABKAIAQZwFQQQQt4WAgAALAkACQCAAQYgCai0AACIBQQNxQQNGDQAgAQ4DAQABAQsgAEGMAmoiASgCABCNgoCAACABKAIAQZwFQQQQt4WAgAALAkACQCAAQawCai0AACIBQQNxQQNGDQAgAQ4DAQABAQsgAEGwAmoiASgCABCNgoCAACABKAIAQZwFQQQQt4WAgAALAkACQCAAQdACai0AACIBQQNxQQNGDQAgAQ4DAQABAQsgAEHUAmoiASgCABCNgoCAACABKAIAQZwFQQQQt4WAgAALAkACQCAAQfQCai0AACIBQQNxQQNGDQAgAQ4DAQABAQsgAEH4AmoiASgCABCNgoCAACABKAIAQZwFQQQQt4WAgAALAkACQCAAQZgDai0AACIBQQNxQQNGDQAgAQ4DAQABAQsgAEGcA2oiASgCABCNgoCAACABKAIAQZwFQQQQt4WAgAALAkACQCAAQbwDai0AACIBQQNxQQNGDQAgAQ4DAQABAQsgAEHAA2oiASgCABCNgoCAACABKAIAQZwFQQQQt4WAgAALAkACQCAAQeADai0AACIBQQNxQQNGDQAgAQ4DAQABAQsgAEHkA2oiASgCABCNgoCAACABKAIAQZwFQQQQt4WAgAAL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IgFBBEsNBSABQQNGDQUgAEEIaiEADAQLAkAgAEEIaigCACIBRQ0AIAAoAgQgAUEBELeFgIAACyAAQRBqIQAMAwsgAEEEaiEADAILIABBBGohAAwBCwJAIABBCGooAgAiAUUNACAAKAIEIAFBARC3hYCAAAsgAEEQaiEACyAAQQRqKAIAIgFFDQAgACgCACABQQEQt4WAgAALC6QFARF/I4CAgIAAQfAAayIDJICAgIAAQQAhBAJAIAAoAgAiBSAAKAIEIgZGDQAgACgCCCIHQRAgB0EQSxshCCAHQSRsIAAoAgxqQQhqIQkgA0HIAGpBCGohCiADQcgAakEBciELAkACQANAIAAgBUEMaiIMNgIAAkACQAJAIAUoAgBBAkYNACADQcgAaiAFEK6BgIAAIAMtAEgiBUEDcUF+ag4CBAABC0ECIQUMAQsgA0HEAGpBAmogC0ECai0AADoAACADQShqQQhqIApBCGopAgA3AwAgA0EoakEQaiAKQRBqKQIANwMAIANBKGpBGGogCkEYaigCADYCACADIAsvAAA7AUQgAyAKKQIANwMoIAMoAkwhDSAFQQNGDQMLIANBJGpBAmoiDiADQcQAakECai0AADoAACADQQhqQQhqIg8gA0EoakEIaikDADcDACADQQhqQRBqIhAgA0EoakEQaikDADcDACADQQhqQRhqIhEgA0EoakEYaigCADYCACADIAMvAUQ7ASQgAyADKQMoNwMIAkACQAJAIAggB0YNACAJQXhqIhItAAAiE0EDcUEDRg0BIBMOAwIBAgILIAhBEEGUzsCAABC3kICAAAALIAlBfGoiEygCABCNgoCAACATKAIAQZwFQQQQt4WAgAALIBIgBToAACAJIAMpAwg3AgAgCUF5aiIFIAMvASQ7AAAgCUF8aiANNgIAIAVBAmogDi0AADoAACAJQQhqIA8pAwA3AgAgCUEQaiAQKQMANwIAIAlBGGogESgCADYCACAAIAdBAWoiBzYCCCAJQSRqIQkgDCEFIAwgBkcNAAwDCwsgAygCTCENCyACEI6CgIAAQQEhBCAAIAdBAWo2AgggAiANNgIACyADQfAAaiSAgICAACAEC+kEARB/I4CAgIAAQcAAayIEJICAgIAAAkACQAJAIAEoAgAiBSABKAIEIgZGDQAgAkEEaigCACIHQQRqIQggA0EEaigCACEJIAMoAgAhCiACKAIAIQsgASgCCCEMA0AgASAFIg1BIGoiBTYCACAEQSBqIA0Qw46AgAACQAJAIAwoAgAiAygCBCIORQ0AIAMoAgAhDwNAIA5BXGohECAOQcADaiECIA4vAb4DIhFBBXQhA0F/IRICQANAAkAgAw0AIBEhEgwCCyANIAJBIBC6kYCAACETIBJBAWohEiAQQShqIRAgA0FgaiEDIAJBIGohAkF/IBNBAEcgE0EASBsiE0EBRg0ACyATQf8BcUUNAwsgD0UNASAPQX9qIQ8gDiASQQJ0akGgBmooAgAhDgwACwtBjMLAgABBNUGow8CAABDLkICAAAALIARBGGogBEEgakEYaikDADcDACAEQRBqIARBIGpBEGopAwA3AwAgBEEIaiAEQSBqQQhqKQMANwMAIAQgBCkDIDcDAAJAAkAgCy0AAEUNACAHKAIARQ0AIBAoAgAiAyAHKAIkIgJNDQEgAyACQX9zaiIDIBBBDGooAgBPDQEgEEEEaigCACADQQV0aiAIQSAQupGAgAANAQsgBCAKIBBBHGpBARCWgoCAADcDICAEQSBqIAkQhI6AgABB/wFxQQJJDQMLIAUgBkcNAAsLIABBADYCIAwBCyAAIAQpAwA3AgAgAEEYaiAEQRhqKQMANwIAIABBEGogBEEQaikDADcCACAAQQhqIARBCGopAwA3AgAgACAQNgIgCyAEQcAAaiSAgICAAAvbAwICfwF+I4CAgIAAQbACayIDJICAgIAAAkACQAJAAkAgAEEgaiIEEPWNgIAADQAgAg0CIANBIGogASAEEPqNgIAAIANBqAFqIANBIGpBiAEQvJGAgAAaIANBGGogA0GoAWoQhoKAgAAgAygCGA0BQgAhBQwDCwJAIAINACADQagBaiABEPiNgIAAIANBqAFqIAAQmoKAgAAhBQwDCyADQagBaiABEPmNgIAAIANBqAFqIAAQmoKAgAAhBQwCCyADKAIcIQFCACEFIABBGGohAgNAAkAgAigCACABQQF2IgFNDQAgBSAAKAIQIAFBMGxqQSBqEI+OgIAAEIKOgIAAIQULIANBEGogA0GoAWoQhoKAgAAgAygCFCEBIAMoAhBFDQIMAAsLIANBIGogASAEEPuNgIAAIANBqAFqIANBIGpBiAEQvJGAgAAaIANBCGogA0GoAWoQhoKAgAACQCADKAIIDQBCACEFDAELIAMoAgwhAUIAIQUgAEEYaiECA0ACQCACKAIAIAFBAXYiAU0NACAFIAAoAhAgAUEwbGpBIGoQj46AgAAQgo6AgAAhBQsgAyADQagBahCGgoCAACADKAIEIQEgAygCAA0ACwsgA0GwAmokgICAgAAgBQuZBQIQfwN+I4CAgIAAQcAAayIEJICAgIAAAkACQAJAIAEoAgAiBSABKAIEIgZGDQAgA0EYaiEHIAJBBGooAgAiCEEEaiEJIAIoAgAhCiABKAIIIQsDQCABIAUiDEEgaiIFNgIAIARBIGogDBDDjoCAAAJAAkAgCygCACICKAIEIg1FDQAgAigCACEOA0AgDUFcaiEPIA1BwANqIRAgDS8BvgMiEUEFdCECQX8hEgJAA0ACQCACDQAgESESDAILIAwgEEEgELqRgIAAIRMgEkEBaiESIA9BKGohDyACQWBqIQIgEEEgaiEQQX8gE0EARyATQQBIGyITQQFGDQALIBNB/wFxRQ0DCyAORQ0BIA5Bf2ohDiANIBJBAnRqQaAGaigCACENDAALC0GMwsCAAEE1QajDwIAAEMuQgIAAAAsgBEEYaiAEQSBqQRhqKQMANwMAIARBEGogBEEgakEQaikDADcDACAEQQhqIARBIGpBCGopAwA3AwAgBCAEKQMgNwMAAkACQCAKLQAARQ0AIAgoAgBFDQAgDygCACICIAgoAiQiEE0NASACIBBBf3NqIgIgD0EMaigCAE8NASAPQQRqKAIAIAJBBXRqIAlBIBC6kYCAAA0BCyADKAIgIA9BHGpBARCWgoCAACEUIAMpAwAgFBCDjoCAACEVIAMpAwghFiAEIBQgAykDEBCBjoCAACAVIBYgFSAWVBsQgY6AgAA3AyAgBEEgaiAHEISOgIAAQf8BcUECSQ0DCyAFIAZHDQALCyAAQQA2AiAMAQsgACAEKQMANwIAIABBGGogBEEYaikDADcCACAAQRBqIARBEGopAwA3AgAgAEEIaiAEQQhqKQMANwIAIAAgDzYCIAsgBEHAAGokgICAgAALqgIBAX8jgICAgABBIGsiAySAgICAACADQRBqIAJBxcHAgABBBEECEP2GgIAAAkACQAJAIAMoAhANACADIAMoAhQ2AgggAyADQRhqLQAAOgAMIANBEGogA0EIakHJwcCAAEEFIAFBEGoQw4CAgAAgAygCEA0BIANBEGogA0EIakHOwcCAAEEGIAEQ+YCAgAACQCADKAIQDQAgACADKAIIIAMtAAwQk4eAgAAMAwsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMAgsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMAQsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgALIANBIGokgICAgAAL1iYEB38Bfgd/A34jgICAgABBsAdrIgYkgICAgAACQAJAAkAgAUEgaigCACIHRQ0AIAFBCGohCCABQRhqKAIAIQlBACEKIAchCwNAAkACQEF/IAkgB0EBdiAKaiIMQTBsaiAEQSAQupGAgAAiB0EARyAHQQBIGyIHQQFHDQAgDCELDAELIAdB/wFxQf8BRw0DIAxBAWohCgsgCyAKayEHIAsgCksNAAsLIABBADsB+AEgAEIANwMADAELIAkgDEEwbGoiCkEoaigCACELIAYgCikDIDcDCCAGIAs2AhAgBkEIahCPjoCAACENIAZBiAJqQQRyIg4gA0EEahDDjoCAACAGIAMoAgAiDzYCiAIgBkGwAmogBRCpjoCAACAGQfACakEYaiIQIARBGGopAAA3AwAgBkHwAmpBEGogBEEQaikAADcDACAGQfACakEIaiAEQQhqKQAANwMAIAYgBCkAADcD8AIgAUHYAGohEQJAAkACQAJAAkAgAUHcAGooAgAiCQ0AQQAhCQwBCyARKAIAIRIDQEEAIAkvAcoRIhNBBXRrIRRBfyELQQAhB0HMESEKAkACQANAAkAgFCAKakHMEUcNACATIQsMAgsgCSAKaiEMIAtBAWohCyAHQcwBaiEHIApBIGohCkF/IAZB8AJqIAxBIBC6kYCAACIMQQBHIAxBAEgbIgxBAUYNAAsgDEH/AXFFDQELIBJFDQIgEkF/aiESIAkgC0ECdGpBrBRqKAIAIQkMAQsLAkACQAJAIAkgB2oiCkG4fmoiCy0AAA0AIApBgH9qIA5BIBC6kYCAAA0CIApB/H5qKAIAIA9HDQIgCkG5fmogBkGwAmpBwAAQupGAgAANAkEBIQoMAQsCQCAKQcB+aiAOQSAQupGAgAANACAKQbx+aigCACAPRw0AIApB4H5qIAZBsAJqQcAAELqRgIAADQBBASEKDAELAkAgCkGkf2ogDkEgELqRgIAADQAgCkGgf2ooAgAgD0cNACAKQURqIAZBsAJqQcAAELqRgIAADQBBASEKDAELQQAhCgsgACAKOgD5ASAAQQE6APgBIABCADcDAAwFCyAGQZAGakEEciAKQYB/ahDDjoCAACAGIApB/H5qKAIANgKQBiAGQcwFaiAKQbl+aiIHEKmOgIAAIAZBqAVqQSBqIAZBkAZqQSBqIgwoAgA2AgAgBkGoBWpBGGogBkGQBmpBGGoiCSkDADcDACAGQagFakEQaiAGQZAGakEQaiIUKQMANwMAIAZBqAVqQQhqIAZBkAZqQQhqIgIpAwA3AwAgBiAGKQOQBjcDqAUgDCAGQYgCakEgaigCADYCACAJIAZBiAJqQRhqKQMANwMAIBQgBkGIAmpBEGopAwA3AwAgAiAGQYgCakEIaikDADcDACAGIAYpA4gCNwOQBiAGQbwGaiAGQbACakEIaikDADcCACAGQcQGaiAGQbACakEQaikDADcCACAGQcwGaiAGQbACakEYaikDADcCACAGQdQGaiAGQbACakEgaikDADcCACAGQdwGaiAGQdgCaikDADcCACAGQeQGaiAGQeACaikDADcCACAGQewGaiAGQegCaikDADcCACAGIAYpA7ACNwK0BiAGQfMCaiAGQagFakHkABC8kYCAABogBkHABGogBkGQBmpB5AAQvJGAgAAaIAtBAToAACAHIAZB8AJqQecAELyRgIAAGiAKQaB/aiAGQcAEakHkABC8kYCAABogASkDACENDAELIAZBgAdqQQhqIgogECkDADcDACAGIAYpA4ADNwOAByAGKQPwAiEVIAYpA/gCIRYgASABKQNQIA0Qgo6AgAA3A1AgBkGQBmpBKGogCikDADcDACAGIBY3A6gGIAYgFTcDoAYgBiARNgKcBiAGIAs2ApgGIAYgCTYClAYgBkEANgKQBiAGIAYpA4AHNwOwBiAGQdQDaiAGQYgCakEgaigCADYCACAGQfACakHcAGogBkGIAmpBGGopAwA3AgAgBkHEA2ogBkGIAmpBEGopAwA3AgAgBkG8A2ogBkGIAmpBCGopAwA3AgAgBiAGKQOIAjcCtAMgBkH5AmogBkGwAmpBCGopAwA3AAAgBkGBA2ogBkGwAmpBEGopAwA3AAAgBkGJA2ogBkGwAmpBGGopAwA3AAAgBkGRA2ogBkGwAmpBIGopAwA3AAAgBkGZA2ogBkGwAmpBKGopAwA3AAAgBkGhA2ogBkGwAmpBMGopAwA3AAAgBkGpA2ogBkHoAmopAwA3AAAgBiAGKQOwAjcA8QIgBkEAOgDwAiAGQZAGaiAGQfACahC2g4CAACELIAEpAwAhDSALLQAADQAgBkEIakEBEJGOgIAAIQogBkHwAmogC0HIAGoQw46AgAAgAUGYAWogBkHwAmogCygCRCAKIAIQzoCAgAANAiAGQZAGakEIaiILIANBCGopAgA3AwAgBkGQBmpBEGoiByADQRBqKQIANwMAIAZBkAZqQRhqIgwgA0EYaikCADcDACAGQZAGakEgaiIJIANBIGooAgA2AgAgBkHwAmpBCGoiFCAFQQhqKQAANwMAIAZB8AJqQRBqIgIgBUEQaikAADcDACAGQfACakEYaiISIAVBGGopAAA3AwAgBkHwAmpBIGoiEyAFQSBqKQAANwMAIAZB8AJqQShqIhEgBUEoaikAADcDACAGQfACakEwaiIOIAVBMGopAAA3AwAgBkHwAmpBOGoiDyAFQThqKQAANwMAIAYgAykCADcDkAYgBiAFKQAANwPwAgJAIAFBkAFqKAIAIgogAUGMAWooAgBHDQAgAUGIAWogChCwgICAACABKAKQASEKCyABKAKIASAKQYgBbGoiCkEBNgIAIAogBikDkAY3AgQgCiAGKQPwAjcCKCAKQQxqIAspAwA3AgAgCkEUaiAHKQMANwIAIApBHGogDCkDADcCACAKQSRqIAkoAgA2AgAgCkEwaiAUKQMANwIAIApBOGogAikDADcCACAKQcAAaiASKQMANwIAIApByABqIBMpAwA3AgAgCkHQAGogESkDADcCACAKQdgAaiAOKQMANwIAIApB4ABqIA8pAwA3AgAgCkGAAWogBEEYaikAADcAACAKQfgAaiAEQRBqKQAANwAAIApB8ABqIARBCGopAAA3AAAgCiAEKQAANwBoIAEgASgCkAFBAWo2ApABQgAhFQwBCyABQShqIAZBCGpBARCRjoCAABD3jYCAABogBkGQBmpBCGoiByADQQhqKQIANwMAIAZBkAZqQRBqIgwgA0EQaikCADcDACAGQZAGakEYaiIJIANBGGopAgA3AwAgBkGQBmpBIGoiFCAD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ACAYIQFBASEADAULIAEgGXQhACABQQFqIhohASAVIAAgFGoiABD8jYCAAEUNAAsgACASQQZ0aiEAIBohAQwBCyAJIRoCQAJAAkACQCALDQBBACEJDAELIAohCSALIApHDQELIBBQDQEgDCANIAwgDUsbIRgDQCAYIA1GDQIgDSADdCEAIA1BAWoiGSENIA8gACAOaiIAEPyNgIAARQ0ACyAAIAJqIQBCACEWIBkhDSAJIQsgGiEJDAILQQAhAUEAIAggCykDACIVUBshESAaQQFqIQkgC0EIaiELQgEhFiAaIRIgBiETIAchFAwCCyAXDwsgBSAAQQF2IgBNDQIgFyAEIABBMGxqQSBqEI+OgIAAEIKOgIAAIRcMAgtBACEADAALCwvmAQEBfyOAgICAAEHgAGsiBSSAgICAACAFQdAAaiACQRBqKQIANwMAIAVByABqIAJBCGopAgA3AwAgBUEIakEIaiADQQhqKQMANwMAIAVBCGpBEGogA0EQaikDADcDACAFQQhqQRhqIANBGGopAwA3AwAgBUEIakEgaiADQSBqKQMANwMAIAVBCGpBKGogA0EoaikDADcDACAFQQhqQTBqIANBMGopAwA3AwAgBSACKQIANwNAIAUgAykDADcDCCAFIAQ6AFggACAFQcAAaiAFQQhqIAQQ04OAgAAgBUHgAGokgICAgAAL5gEBAX8jgICAgABB4ABrIgUkgICAgAAgBUHQAGogAkEQaikCADcDACAFQcgAaiACQQhqKQIANwMAIAVBCGpBCGogA0EIaikDADcDACAFQQhqQRBqIANBEGopAwA3AwAgBUEIakEYaiADQRhqKQMANwMAIAVBCGpBIGogA0EgaikDADcDACAFQQhqQShqIANBKGopAwA3AwAgBUEIakEwaiADQTBqKQMANwMAIAUgAikCADcDQCAFIAMpAwA3AwggBSAEOgBYIAAgBUHAAGogBUEIaiAEENODgIAAIAVB4ABqJICAgIAAC+YBAQF/I4CAgIAAQeAAayIFJICAgIAAIAVB0ABqIAJBEGopAgA3AwAgBUHIAGogAkEIaikCADcDACAFQQhqQQhqIANBCGopAwA3AwAgBUEIakEQaiADQRBqKQMANwMAIAVBCGpBGGogA0EYaikDADcDACAFQQhqQSBqIANBIGopAwA3AwAgBUEIakEoaiADQShqKQMANwMAIAVBCGpBMGogA0EwaikDADcDACAFIAIpAgA3A0AgBSADKQMANwMIIAUgBDoAWCAAIAVBwABqIAVBCGogBBDTg4CAACAFQeAAaiSAgICAAAv0AQECfwJAAkACQAJAIAAtAAAOAwMBAgALAkACQAJAAkAgACgCBCIBLQAAIgJBfGpBAyACQQNLGw4EAwMBAgALIAFBCGooAgAiAkUNAiABKAIEIAJBARC3hYCAAAwCCyABQQhqKAIAIgJFDQEgASgCBCACQQEQt4WAgAAMAQsgARCegoCAAAsgACgCBEE0QQQQt4WAgAAMAgsCQCAAKAIERQ0AIABBBGoQkoKAgAALIABBCGooAgAiAkUNASAAQQxqKAIAIgBFDQEgAiAAQQEQt4WAgAAPCyAAQQhqKAIAIgJFDQAgACgCBCACQQEQt4WAgAAPCwsCAAsUACAAQSg2AgQgAEH4w8CAADYCAAsUACAAQSg2AgQgAEH4w8CAADYCAAsUACAAQSg2AgQgAEH4w8CAADYCAAsUACAAQSg2AgQgAEH4w8CAADYCAAsJACAAQQA2AgALCQAgAEEANgIACwkAIABBADYCAAsJACAAQQA2AgALCQAgAEEANgIACwIACwIACwIACwIACw0AQpv9mL7NhMi7qn8LDQBC292Y1rOY9eGafwsMAELi6u+gxtGB2VALDQBCztOCu7fd+7C6fwtpAQJ/AkACQAJAAkAgAg0AQQEhAwwBCyACQX9KIgRFDQEgAiAEELaFgIAAIgNFDQILIAMgASACELyRgIAAIQEgACACNgIIIAAgAjYCBCAAIAE2AgAPCxCpkICAAAALIAIgBBCokICAAAALugoDAn8BfgV/I4CAgIAAQRBrIgUkgICAgAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAg0AIABBADYCCCAAQgE3AgAMAQsCQAJAIAStIAJBDGwiBkF0akEMbq1+IgdCIIinDQAgAUEMaiEIIAenIQkgASEKA0AgBkUNAiAGQXRqIQYgCSAKQQhqKAIAaiILIAlPIQwgCkEMaiEKIAshCSAMDQALC0HDxMCAAEE1QdDFwIAAEMuQgIAAAAsCQAJAIAkNAEEBIQoMAQsgCUF/SiIGRQ0CIAkgBhC2hYCAACIKRQ0DC0EAIQsgBUEANgIIIAUgCjYCACABQQhqKAIAIQYgBSAJNgIEIAEoAgAhDAJAIAkgBk8NACAFQQAgBhC6gICAACAFKAIAIQogBSgCCCELCyAKIAtqIAwgBhC8kYCAABogCSALIAZqIgtrIQYgCiALaiEKAkACQAJAAkACQAJAAkAgBA4FBAMCAQAFCyACQQFGDQUgAkEMbEF0aiEMA0AgBkEDTQ0MIAhBCGooAgAhCyAIKAIAIQQgCiADKAAANgAAIAZBfGoiBiALSQ0NIAhBDGohCCAGIAtrIQYgCkEEaiAEIAsQvJGAgAAgC2ohCiAMQXRqIgwNAAwGCwsgAkEBRg0EIAJBDGxBdGohDANAIAZBAk0NDSAIQQhqKAIAIQsgCCgCACEEIApBAmogA0ECai0AADoAACAKIAMvAAA7AAAgBkF9aiIGIAtJDQ4gCEEMaiEIIAYgC2shBiAKQQNqIAQgCxC8kYCAACALaiEKIAxBdGoiDA0ADAULCyACQQFGDQMgAkEMbEF0aiEMA0AgBkEBTQ0OIAhBCGooAgAhCyAIKAIAIQQgCiADLwAAOwAAIAZBfmoiBiALSQ0PIAhBDGohCCAGIAtrIQYgCkECaiAEIAsQvJGAgAAgC2ohCiAMQXRqIgwNAAwECwsgAkEBRg0CIAJBDGxBdGohDANAIAZFDQ8gCEEIaigCACELIAgoAgAhBCAKIAMtAAA6AAAgBkF/aiIGIAtJDRAgCEEMaiEIIAYgC2shBiAKQQFqIAQgCxC8kYCAACALaiEKIAxBdGoiDA0ADAMLCyACQQFGDQEgAUEUaiELIAJBDGxBdGohCANAIAYgCygCACIMSQ0QIAtBeGohAyALQQxqIQsgBiAMayEGIAogAygCACAMELyRgIAAIAxqIQogCEF0aiIIDQAMAgsLIAJBAUYNACACQQxsQXRqIQwDQCAGIARJDQUgCEEIaigCACELIAgoAgAhAiAKIAMgBBC8kYCAACEKIAYgBGsiBiALSQ0GIAhBDGohCCAGIAtrIQYgCiAEaiACIAsQvJGAgAAgC2ohCiAMQXRqIgwNAAsLIAAgBSkDADcCACAAQQhqIAkgBms2AgALIAVBEGokgICAgAAPCxCpkICAAAALIAkgBhCokICAAAALQaDEwIAAQSNBwMXAgAAQu5CAgAAAC0GgxMCAAEEjQcDFwIAAELuQgIAAAAtBoMTAgABBI0HAxcCAABC7kICAAAALQaDEwIAAQSNBwMXAgAAQu5CAgAAAC0GgxMCAAEEjQcDFwIAAELuQgIAAAAtBoMTAgABBI0HAxcCAABC7kICAAAALQaDEwIAAQSNBwMXAgAAQu5CAgAAAC0GgxMCAAEEjQcDFwIAAELuQgIAAAAtBoMTAgABBI0HAxcCAABC7kICAAAALQaDEwIAAQSNBwMXAgAAQu5CAgAAAC0GgxMCAAEEjQcDFwIAAELuQgIAAAAu7EQMUfwF+BH8jgICAgABBEGsiAiSAgICAAAJAAkAgAUEVSQ0AAkACQCABQf////8DSw0AIAFBAXRBfHEiA0EASA0AIAFBgICAgARJQQJ0IQQCQAJAIAMNACAEIQUMAQsgAyAEELaFgIAAIQULAkAgBUUNACACQQA2AgggAkIENwMAIABBfGohBiAAQQxqIQcgAEF4aiEIIABBdGohCUEAIQQgASEKAkADQAJAAkAgCiILQX9qIgwNAEEAIQpBASENDAELAkACQCAAIAxBAnRqKAIAIAAgC0F+aiIOQQJ0aigCACINSQ0AIAtBfmohDyAJIAtBAnRqIRBBACEKQQAhDANAAkAgDyAMRw0AIAshDQwECyAMQQFqIQwgDSAQKAIAIhFJIRIgEEF8aiEQIBEhDSASRQ0ACyAMQQFqIQ0gDEF/cyALaiEMDAELQQIhESAIIAtBAnRqIRIgDiEPAkADQCARIRMgEiEQIA8iDEUNASAQQXxqIRIgE0EBaiERIA0gACAMQX9qIg9BAnRqKAIAIhRJIRUgFCENIBUNAAsLAkACQAJAAkAgCyAMSQ0AIAsgAUsNASALIAxrIg1BAkkNBCALQQJ0IRVBACERIA1BAXYiFEEBRg0DIAggFWohEUEAIRJBACATQQF2Qf7///8HcWshDwNAIBApAgAhFiAQIBEpAgBCIIk3AgAgESAWQiCJNwIAIBBBCGohECARQXhqIREgDyASQX5qIhJHDQAMAwsLIAwgC0GsxsCAABC8kICAAAALIAsgAUGsxsCAABC5kICAAAALQQAgEmshEQsgDUECcUUNACAAIAxBAnRqIBFBAnRqIhAoAgAhEiAQIAAgFWogFEECdGsgFCARQX9zakECdGoiESgCADYCACARIBI2AgALAkAgDA0AIAwhCgwBCwJAIA1BCU0NACAMIQoMAQsCQAJAAkAgCyABSw0AIAcgDEECdGohBCAGIAtBAnRqIRQDQCALIAxBf2oiCkkNAgJAIAsgCmsiDUEBTQ0AIAAgCkECdGoiECgCBCISIBAoAgAiEU8NACAQQQRqIQ8gECASNgIAAkAgDUEDSQ0AIBAoAggiEiARTw0AIA8gEjYCACAUIQ8gDUEDRg0AIA4hEyAEIRICQCAQKAIMIg8gEUkNACAQQQhqIQ8MAQsCQAJAA0AgEkF4aiAPNgIAIAwgE0F/aiITRg0BIBIoAgAhDyASQQRqIhAhEiAPIBFPDQIMAAsLIBQhDwwBCyAQQXhqIQ8LIA8gETYCAAsgCkUNAyAEQXxqIQQgCiEMIA1BCkkNAAwDCwsgCyAMQX9qIgpJDQAgCyABQbzGwIAAELmQgIAAAAsgCiALQbzGwIAAELyQgIAAAAsgAigCCCEECwJAIAQgAigCBEcNACACIAQQqICAgAAgAigCCCEECyACKAIAIARBA3RqIgQgDTYCBCAEIAo2AgAgAiACKAIIQQFqIgQ2AggCQAJAIARBAkkNAANAAkACQAJAAkAgAigCACIMIARBf2pBA3RqIg0oAgBFDQAgBEEDdCAMaiIRQXRqKAIAIgsgDSgCBCIQTQ0AAkAgBEEDTw0AQQIhBCAKRQ0MDAgLIAwgBEF9aiIVQQN0aigCBCINIBAgC2pNDQECQCAEQQRPDQBBAyEEIApFDQwMCAsgEUFkaigCACANIAtqTQ0BDAULIARBA0kNASANKAIEIRAgDCAEQX1qIhVBA3RqKAIEIQ0LIA0gEEkNAQsgBEF+aiEVCwJAAkACQAJAAkAgFUEBaiIXIARPDQAgDCAVQQN0IhhqIgQoAgQiGSAEKAIAaiIQIAwgF0EDdCIaaiIEKAIAIg5JDQEgECABSw0CIAAgDkECdGoiDSAEKAIEIhRBAnQiDGohBCAQQQJ0IQsCQCAQIA5rIhEgFGsiECAUTw0AIAUgBCAQQQJ0IgwQvJGAgAAiEyAMaiEMAkAgFEEBSA0AIBBBAUgNACAGIAtqIRADQCAQIAxBfGoiEigCACILIARBfGoiDygCACIRIAsgEUsbNgIAIAwgEiALIBFJIgsbIQwgDyAEIAsbIgQgDU0NASAQQXxqIRAgDCATSw0ACwsgBCENDAQLIAUgDSAMELyRgIAAIhAgDGohDCAUQQFIDQMgESAUTA0DIAAgC2ohDyAQIRADQCANIAQoAgAiCyAQKAIAIhEgCyARSSISGzYCACANQQRqIQ0gECALIBFPQQJ0aiIQIAxPDQUgBCASQQJ0aiIEIA9JDQAMBQsLIBcgBEHMxsCAABC3kICAAAALIA4gEEHcxsCAABC8kICAAAALIBAgAUHcxsCAABC5kICAAAALIAUhEAsgDSAQIAwgEGsQvJGAgAAaIBUgAigCCCIETw0CIAIoAgAgGGoiBCAZIBRqNgIEIAQgDjYCACACKAIIIgQgF00NBCACKAIAIBpqIgwgDEEIaiAEIBVrQQN0QXBqEMGRgIAAGiACIARBf2oiBDYCCCAEQQFLDQALCyAKRQ0FDAELCyAVIARB7MbAgAAQt5CAgAAACyAXIARB/MbAgAAQsZCAgAAACyADIAQQqJCAgAAACxCpkICAAAALAkAgAigCBCIERQ0AIAIoAgAgBEEDdEEEELeFgIAACyAFIANBBBC3hYCAAAwBCyABQQJJDQAgAUF/aiEEIAAgAUECdGoiEEF8aiEUQX8hCwNAAkAgACAEQX9qIgRBAnRqIgwoAgQiESAMKAIAIg1PDQAgDEEEaiESIAwgETYCAAJAIAEgBGsiEUEDSQ0AIAwoAggiDyANTw0AIBIgDzYCACAUIRIgEUEDRg0AIAshDyAQIRECQCAMKAIMIhMgDUkNACAMQQhqIRIMAQsCQANAIBEgEzYCACAPQX9qIg9FDQEgEUEIaiEMIBFBBGoiEiERIAwoAgAiEyANTw0CDAALCyAUIRILIBIgDTYCAAsgC0EBaiELIBBBfGohECAEDQALCyACQRBqJICAgIAAC4UbAxR/AX4DfyOAgICAAEEwayICJICAgIAAAkACQCABQRVJDQACQCABQf///z9LDQAgAUEEdEFgcSIDQQBIDQAgAUGAgIDAAEkhBAJAAkAgAw0AIAQhBQwBCyADIAQQtoWAgAAhBQsCQCAFRQ0AIAJBADYCCCACQgQ3AwAgAEFgaiEGIABBQGohByAAQaB/aiEIIAEhCQNAIAkhCkEAIQlBASELAkAgCkF/aiIMRQ0AAkACQCAAIAxBBXRqIAAgCkF+aiINQQV0ahDEjoCAAEH/AXFB/wFGDQAgCkF+aiELIAggCkEFdGohBEEAIQlBACENAkADQCALIA1GDQEgDUEBaiENIARBIGogBBDEjoCAACEOIARBYGohBCAOQf8BcUH/AUcNAAsgDUEBaiELIA1Bf3MgCmohDgwCCyAKIQsMAgsgByAKQQV0Ig9qIQtBAiEQAkADQCAQIREgCyEEIA0iDkUNASAEQWBqIQsgEUEBaiEQIAAgDkEFdGogACAOQX9qIg1BBXRqEMSOgIAAQf8BcUH/AUYNAAsLAkACQCAKIA5JDQAgCiABSw0BIAogDmsiC0ECSQ0CIBFBAXYhECAGIA9qIQ0DQCAEKAAAIREgBCANKAAANgAAIA0gETYAACANQQVqLQAAIREgDUEEaiIPLQAAIRIgDyAEQQRqIhMvAAA7AAAgBEEHai0AACEPIARBBmoiFC0AACEVIBQgDUEGaiIJLwAAOwAAIBMgEjoAACAEQQVqIBE6AAAgCSAVOgAAIA1BB2ogDzoAACANQQhqIhEtAAAhDyARIARBCGoiEi0AADoAACASIA86AAAgBEEJaiIRLQAAIQ8gESANQQlqIhItAAA6AAAgEiAPOgAAIARBCmoiES0AACEPIBEgDUEKaiISLQAAOgAAIBIgDzoAACAEQQtqIhEtAAAhDyARIA1BC2oiEi0AADoAACASIA86AAAgBEEMaiIRLQAAIQ8gESANQQxqIhItAAA6AAAgEiAPOgAAIARBDWoiES0AACEPIBEgDUENaiISLQAAOgAAIBIgDzoAACAEQQ5qIhEtAAAhDyARIA1BDmoiEi0AADoAACASIA86AAAgBEEPaiIRLQAAIQ8gESANQQ9qIhItAAA6AAAgEiAPOgAAIARBEGoiES0AACEPIBEgDUEQaiISLQAAOgAAIBIgDzoAACAEQRFqIhEtAAAhDyARIA1BEWoiEi0AADoAACASIA86AAAgBEESaiIRLQAAIQ8gESANQRJqIhItAAA6AAAgEiAPOgAAIARBE2oiES0AACEPIBEgDUETaiISLQAAOgAAIBIgDzoAACAEQRRqIhEtAAAhDyARIA1BFGoiEi0AADoAACASIA86AAAgBEEVaiIRLQAAIQ8gESANQRVqIhItAAA6AAAgEiAPOgAAIARBFmoiES0AACEPIBEgDUEWaiISLQAAOgAAIBIgDzoAACAEQRdqIhEtAAAhDyARIA1BF2oiEi0AADoAACASIA86AAAgBEEYaiIRLQAAIQ8gESANQRhqIhItAAA6AAAgEiAPOgAAIARBGWoiES0AACEPIBEgDUEZaiISLQAAOgAAIBIgDzoAACAEQRpqIhEtAAAhDyARIA1BGmoiEi0AADoAACASIA86AAAgBEEbaiIRLQAAIQ8gESANQRtqIhItAAA6AAAgEiAPOgAAIARBHGoiES0AACEPIBEgDUEcaiISLQAAOgAAIBIgDzoAACAEQR1qIhEtAAAhDyARIA1BHWoiEi0AADoAACASIA86AAAgBEEeaiIRLQAAIQ8gESANQR5qIhItAAA6AAAgEiAPOgAAIARBH2oiES0AACEPIBEgDUEfaiISLQAAOgAAIBIgDzoAACAEQSBqIQQgDUFgaiENIBBBf2oiEA0ADAMLCyAOIApBrMbAgAAQvJCAgAAACyAKIAFBrMbAgAAQuZCAgAAACwJAIA4NACAOIQkMAQsCQCALQQlNDQAgDiEJDAELAkACQCAKIAFLDQAgACAOQQV0aiENA0AgCiAOQX9qIglJDQICQCAKIAlrIgtBAU0NACAAIAlBBXRqIhBBIGoiBCAQEMSOgIAAQf8BcUH/AUcNACAQKQAAIRYgECAEKQAANwAAIAJBEGpBGGoiEiAQQRhqIhEpAAA3AwAgAkEQakEQaiITIBBBEGoiDykAADcDACACQRBqQQhqIhQgEEEIaiIVKQAANwMAIBUgBEEIaikAADcAACAPIARBEGopAAA3AAAgESAEQRhqKQAANwAAIAIgFjcDEAJAIAtBA0kNACAMIREgDSEPIBBBwABqIAJBEGoQxI6AgABB/wFxQf8BRw0AAkADQCAPIgRBGGogBEE4aikAADcAACAEQRBqIARBMGopAAA3AAAgBEEIaiAEQShqKQAANwAAIAQgBEEgaiIPKQAANwAAIA4gEUF/aiIRRg0BIARBwABqIAJBEGoQxI6AgABB/wFxQf8BRg0ACwsgBEEgaiEECyAEIAIpAxA3AAAgBEEYaiASKQMANwAAIARBEGogEykDADcAACAEQQhqIBQpAwA3AAALIAlFDQMgDUFgaiENIAkhDiALQQpPDQMMAAsLIAogDkF/aiIJSQ0AIAogAUG8xsCAABC5kICAAAALIAkgCkG8xsCAABC8kICAAAALAkAgAigCCCIEIAIoAgRHDQAgAiAEEKiAgIAAIAIoAgghBAsgAigCACAEQQN0aiIEIAs2AgQgBCAJNgIAIAIgAigCCEEBaiIENgIIAkAgBEECSQ0AAkADQAJAAkACQAJAIAIoAgAiDSAEQX9qQQN0aiIOKAIARQ0AIARBA3QgDWoiEEF0aigCACILIA4oAgQiCk0NACAEQQNJDQYgDSAEQX1qIhRBA3RqKAIEIg4gCiALak0NASAEQQRJDQYgEEFkaigCACAOIAtqTQ0BDAYLIARBA0kNASAOKAIEIQogDSAEQX1qIhRBA3RqKAIEIQ4LIA4gCkkNAQsgBEF+aiEUCwJAAkACQAJAAkAgFEEBaiIMIARPDQAgDSAUQQN0IhdqIgQoAgQiGCAEKAIAaiIOIA0gDEEDdCIZaiINKAIAIhVJDQEgDiABSw0CIAAgFUEFdGoiBCANKAIEIhNBBXQiCmohDSAOQQV0IQsCQCAOIBVrIhAgE2siDiATTw0AIAUgDSAOQQV0IgoQvJGAgAAiEiAKaiEKAkAgE0EBSA0AIA5BAUgNACAGIAtqIQ4DQCANQWBqIQsgCkFgaiEQIA4gCyAQIBAgCxDEjoCAAEH/AXFB/wFGIg8bIhEpAAA3AAAgDkEYaiARQRhqKQAANwAAIA5BEGogEUEQaikAADcAACAOQQhqIBFBCGopAAA3AAAgCiAQIA8bIQogCyANIA8bIg0gBE0NASAOQWBqIQ4gCiASSw0ACwsgDSEEDAQLIAUgBCAKELyRgIAAIg4gCmohCiATQQFIDQMgECATTA0DIAAgC2ohDyAOIQ4DQCAEIA0gDiANIA4QxI6AgABB/wFxIhBB/wFGIhEbIgspAAA3AAAgBEEYaiALQRhqKQAANwAAIARBEGogC0EQaikAADcAACAEQQhqIAtBCGopAAA3AAAgBEEgaiEEIA4gEEH/AUdBBXRqIg4gCk8NBSANIBFBBXRqIg0gD0kNAAwFCwsgDCAEQczGwIAAELeQgIAAAAsgFSAOQdzGwIAAELyQgIAAAAsgDiABQdzGwIAAELmQgIAAAAsgBSEOCyAEIA4gCiAOaxC8kYCAABoCQCAUIAIoAggiBE8NACACKAIAIBdqIgQgGCATajYCBCAEIBU2AgAgAigCCCIEIAxNDQIgAigCACAZaiINIA1BCGogBCAUa0EDdEFwahDBkYCAABogAiAEQX9qIgQ2AgggBEEBSw0BDAMLCyAUIARB7MbAgAAQt5CAgAAACyAMIARB/MbAgAAQsZCAgAAACyAJDQALAkAgAigCBCIERQ0AIAIoAgAgBEEDdEEEELeFgIAACyAFIANBARC3hYCAAAwDCyADIAQQqJCAgAAACxCpkICAAAALIAFBAkkNACABQX9qIQogACABQQV0aiEQQQAhCwNAAkAgACAKQX9qIgpBBXRqIg1BIGoiBCANEMSOgIAAQf8BcUH/AUcNACANKQAAIRYgDSAEKQAANwAAIAJBEGpBGGoiESANQRhqIg4pAAA3AwAgAkEQakEQaiIPIA1BEGoiEikAADcDACACQRBqQQhqIhMgDUEIaiIUKQAANwMAIBQgBEEIaikAADcAACASIARBEGopAAA3AAAgDiAEQRhqKQAANwAAIAIgFjcDEAJAIAEgCmtBA0kNACALIQ4gDUHAAGogAkEQahDEjoCAAEH/AXFB/wFHDQADQCAQIA5qIgRBYGoiDSAEKQAANwAAIA1BGGogBEEYaikAADcAACANQRBqIARBEGopAAA3AAAgDUEIaiAEQQhqKQAANwAAIA5BIGoiDkUNASAEQSBqIAJBEGoQxI6AgABB/wFxQf8BRg0ACwsgBCACKQMQNwAAIARBGGogESkDADcAACAEQRBqIA8pAwA3AAAgBEEIaiATKQMANwAACyALQWBqIQsgCg0ACwsgAkEwaiSAgICAAAuyGQMRfwF+BX8jgICAgABBoAFrIgMkgICAgAACQAJAIAFBFUkNAAJAIAFB8bicDksNACABQQF2QZABbCIEQQBIDQAgAUHyuJwOSUECdCEFAkACQCAEDQAgBSEGDAELIAQgBRC2hYCAACEGCwJAIAZFDQAgA0EANgIIIANCBDcDACAAQfB+aiEHIABB4H1qIQggAEHQfGohCSABIQoDQCAKIQtBACEKQQEhDAJAIAtBf2oiDUUNAAJAAkAgACANQZABbGogACALQX5qIg5BkAFsakEgELqRgIAAQQBIDQAgC0F+aiEMIAkgC0GQAWxqIQVBACEKQQAhDgJAA0AgDCAORg0BIA5BAWohDiAFQZABaiAFQSAQupGAgAAhDyAFQfB+aiEFIA9BAE4NAAsgDkEBaiEMIA5Bf3MgC2ohDwwCCyALIQwMAgsgCCALQZABbCIQaiEMQQIhEQJAA0AgESESIAwhBSAOIg9FDQEgBUHwfmohDCASQQFqIREgD0F/aiEOIAAgD0GQAWxqIhMgE0HwfmpBIBC6kYCAAEEASA0ACwsCQAJAIAsgD0kNACALIAFLDQEgCyAPayIMQQJJDQIgEkEBdiERIAcgEGohDgNAIAVBCGoiEikCACEUIBIgDkEIaiITKQIANwIAIBMgFDcCACAOQRRqKAIAIRIgDkEQaiITKAIAIRAgEyAFQRBqIhUpAgA3AgAgBSkCACEUIAUgDikCADcCACAOIBQ3AgAgFSAQNgIAIAVBFGogEjYCACAFQRhqIhIoAgAhEyASIA5BGGoiECgCADYCACAQIBM2AgAgDkEcaiISKAIAIRMgEiAFQRxqIhAoAgA2AgAgECATNgIAIAVBIGoiEigCACETIBIgDkEgaiIQKAIANgIAIBAgEzYCACAFQSRqIhIoAgAhEyASIA5BJGoiECgCADYCACAQIBM2AgAgBUEoaiISKAIAIRMgEiAOQShqIhAoAgA2AgAgECATNgIAIAVBLGoiEigCACETIBIgDkEsaiIQKAIANgIAIBAgEzYCACAFQTBqIhIoAgAhEyASIA5BMGoiECgCADYCACAQIBM2AgAgBUE0aiISKAIAIRMgEiAOQTRqIhAoAgA2AgAgECATNgIAIAVBOGoiEigCACETIBIgDkE4aiIQKAIANgIAIBAgEzYCACAFQTxqIhIoAgAhEyASIA5BPGoiECgCADYCACAQIBM2AgAgBUHAAGoiEigCACETIBIgDkHAAGoiECgCADYCACAQIBM2AgAgBUHEAGoiEigCACETIBIgDkHEAGoiECgCADYCACAQIBM2AgAgBUHIAGoiEigCACETIBIgDkHIAGoiECgCADYCACAQIBM2AgAgBUHMAGoiEigCACETIBIgDkHMAGoiECgCADYCACAQIBM2AgAgBUHQAGoiEigCACETIBIgDkHQAGoiECgCADYCACAQIBM2AgAgBUHUAGoiEigCACETIBIgDkHUAGoiECgCADYCACAQIBM2AgAgBUHYAGoiEigCACETIBIgDkHYAGoiECgCADYCACAQIBM2AgAgBUHcAGoiEigCACETIBIgDkHcAGoiECgCADYCACAQIBM2AgAgBUHgAGoiEigCACETIBIgDkHgAGoiECgCADYCACAQIBM2AgAgBUHkAGoiEigCACETIBIgDkHkAGoiECgCADYCACAQIBM2AgAgBUHoAGoiEigCACETIBIgDkHoAGoiECgCADYCACAQIBM2AgAgBUHs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AgsgAygCPCECDAQLIAetQv8BgyEIIAUgAUF/ajYCACACIAZBAWo2AgALIAMgCDcDMCAIQv////8PVg0EIAMgCEIHgyIJNwNIAkAgCUIGVA0AIANBj4CAgAA2AlQgAyADQcgAajYCUCADQQE2AmwgA0IBNwJcIANBpM3AgAA2AlggAyADQdAAajYCaCADQThqIANB2ABqEK2QgIAAIANBOGoQz4GAgAAhAgwGCwJAIAinIgJBB0sNAEGox8CAAEEUENCBgIAAIQIMBgsgCachAQJAAkACQAJAIAJBA3YiAkF/ag4CAAECCwJAAkACQCABIANBEGogA0EsakHkABCDhYCAACICDQAgA0HYAGogAygCECADKAIYEMmQgIAAIAMoAlgNAUEAIQJBAEUNBwwLCyADQQA2AhgMAQtB8L/AgABBLxDQgYCAACECIANBADYCGAsgAyACNgJYIANB2ABqQfjMwIAAQQNB+8zAgABBCBC2jYCAACADKAJYIQIMCAtBACECIAEgBCADQSxqQeQAEIaFgIAAIgFFDQEgAyABNgJYIANB2ABqQfjMwIAAQQNBg83AgABBBRC2jYCAACADKAJYIQIMBwsgASACIANBLGpB5AAQ6ICAgAAhAgsgAkUNAQwFCwsgAygCXCECCyADKAIgIQEgAygCHCEFIAMoAhQhBiADKAIQIQcgAg0DIAMoAiQhAiADKAIYIQQLIAAgAjYCFCAAIAE2AhAgACAFNgIMIAAgBDYCCCAAIAY2AgQgACAHNgIADAMLIANBj4CAgAA2AlQgAyADQTBqNgJQIANBATYCbCADQgE3AlwgA0Ggx8CAADYCWCADIANB0ABqNgJoIANBOGogA0HYAGoQrZCAgAAgA0E4ahDPgYCAACECCyADKAIgIQEgAygCHCEFIAMoAhQhBiADKAIQIQcLIABBADYCACAAIAI2AgQCQCAGRQ0AIAcgBkEBELeFgIAACyABRQ0AIAUgAUEBELeFgIAACyADQfAAaiSAgICAAA8LIAEgBkHM6sCAABC4kICAAAAL5wEBAX8jgICAgABB8ABrIgEkgICAgAAgAUEIahCwj4CAACABQShqQSBqIABBIGopAgA3AwAgAUEoakEYaiAAQRhqKQIANwMAIAFBKGpBEGogAEEQaikCADcDACABQShqQQhqIABBCGopAgA3AwAgASAAKQIANwMoIAFB0ABqQRhqIAFBCGpBGGooAgA2AgAgAUHQAGpBEGogAUEIakEQaikDADcDACABQdAAakEIaiABQQhqQQhqKQMANwMAIAEgASkDCDcDUCABQShqIAFB0ABqEL+CgIAAIQAgAUHwAGokgICAgAAgAAu0AQEBfwJAQcgAQQQQtoWAgAAiAg0AQcgAQQQQqJCAgAAACyACQYzJwIAANgIAIAIgASkCADcCBCACIAApAgA3AiAgAkEMaiABQQhqKQIANwIAIAJBFGogAUEQaikCADcCACACQRxqIAFBGGooAgA2AgAgAkEoaiAAQQhqKQIANwIAIAJBMGogAEEQaikCADcCACACQThqIABBGGopAgA3AgAgAkHAAGogAEEgaikCADcCACACC4ABAQF/I4CAgIAAQcAAayICJICAgIAAIAIQsI+AgAAgAkEgakEYaiACQRhqKAIANgIAIAJBIGpBEGogAkEQaikDADcDACACQSBqQQhqIAJBCGopAwA3AwAgAiACKQMANwMgIAAgASACQSBqEMGCgIAAIQEgAkHAAGokgICAgAAgAQt1AQF/AkBBKEEEELaFgIAAIgMNAEEoQQQQqJCAgAAACyADQfjIwIAANgIAIAMgATYCJCADIAA2AiAgAyACKQIANwIEIANBDGogAkEIaikCADcCACADQRRqIAJBEGopAgA3AgAgA0EcaiACQRhqKAIANgIAIAMLngEBAX8jgICAgABB0ABrIgEkgICAgAAgARCwj4CAACABQSBqQQhqIABBCGopAgA3AwAgASAAKQIANwMgIAFBMGpBGGogAUEYaigCADYCACABQTBqQRBqIAFBEGopAwA3AwAgAUEwakEIaiABQQhqKQMANwMAIAEgASkDADcDMCABQSBqIAFBMGoQw4KAgAAhACABQdAAaiSAgICAACAAC4EBAQF/AkBBMEEEELaFgIAAIgINAEEwQQQQqJCAgAAACyACQbTJwIAANgIAIAIgASkCADcCBCACIAApAgA3AiAgAkEMaiABQQhqKQIANwIAIAJBFGogAUEQaikCADcCACACQRxqIAFBGGooAgA2AgAgAkEoaiAAQQhqKQIANwIAIAILngEBAX8jgICAgABB0ABrIgEkgICAgAAgARCwj4CAACABQSBqQQhqIABBCGooAgA2AgAgASAAKQIANwMg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qZCAgAAACyANIA4QqJCAgAAACxgAQYzCwIAAQZzVwIAAIAAgARDLgYCAAAsMACAAIAEQzY6AgAALbAEBfyOAgICAAEEQayICJICAgIAAAkACQCAAKAIAIgAoAgANACABQbjawIAAQQQQ8ZCAgAAhAAwBCyACIAA2AgwgAUGk2sCAAEEEIAJBDGpBvNrAgAAQ/ZCAgAAhAAsgAkEQaiSAgICAACAAC2wBAX8jgICAgABBEGsiAiSAgICAAAJAAkAgACgCACIAKAIADQAgAUG42sCAAEEEEPGQgIAAIQAMAQsgAiAANgIMIAFBpNrAgABBBCACQQxqQajawIAAEP2QgIAAIQALIAJBEGokgICAgAAgAAtyAQF/I4CAgIAAQRBrIgIkgICAgAACQAJAIAAoAgAiACkDAEIAUg0AIAFBuNrAgABBBBDxkICAACEADAELIAIgAEEIajYCDCABQaTawIAAQQQgAkEMakHM2sCAABD9kICAACEACyACQRBqJICAgIAAIAALAgALIwEBfwJAIABBBGooAgAiAUUNACAAKAIAIAFBARC3hYCAAAsL8gIBAn8jgICAgABBEGsiAiSAgICAAAJAAkACQAJAIAFBgAFJDQAgAkEANgIMIAFBgBBPDQEgAiABQT9xQYABcjoADSACIAFBBnZBwAFyOgAMQQIhAQwCCwJAIAAoAggiAyAAKAIERw0AIAAgAxCpgICAACAAKAIIIQMLIAAoAgAgA2ogAToAACAAIAAoAghBAWo2AggMAgsCQCABQYCABEkNACACIAFBP3FBgAFyOgAPIAIgAUEGdkE/cUGAAXI6AA4gAiABQQx2QT9xQYABcjoADSACIAFBEnZBB3FB8AFyOgAMQQQhAQwBCyACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDIQELAkAgACgCBCAAKAIIIgNrIAFPDQAgACADIAEQuoCAgAAgACgCCCEDCyAAKAIAIANqIAJBDGogARC8kYCAABogACADIAFqNgIICyACQRBqJICAgIAAQQALSwEBfwJAIAAoAgQgACgCCCIDayACTw0AIAAgAyACELqAgIAAIAAoAgghAwsgACgCACADaiABIAIQvJGAgAAaIAAgAyACajYCCEEAC8QGAgV/A34jgICAgABBwABrIgQkgICA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A0GIAmogA0GEBGopAgA3AwAgA0EBOgD8AQwQCyADQfgBakEIaiADKAL8AzYCACADQYQCaiADQfgDakEIaikDADcCACADQYwCaiADQYgEaigCADYCACADQQE6APwBDA8LIANBgAJqIAMpAvwDNwMAIANBiAJqIANBhARqKQIANwMAIANBAToA/AEMDgsgA0GAAmogAykC/AM3AwAgA0GIAmogA0GEBGopAgA3AwAgA0EBOgD8AQwNCyAJIAdBwNzAgAAQvJCAgAAACyAHIAJBwNzAgAAQuZCAgAAACyADQfgBakEIaiADKQL8AzcDACADQYgCaiADQYQEaikCADcDACADQQE6APwBDAoLIANBgAJqIAMpAvwDNwMAIANBiAJqIANBhARqKQIANwMAIANBAToA/AEgA0EFNgL4AQwJCyADQQI2AqwFIANBAjYCoAUgA0ECNgKUBSADQQI2AogFIANBAjYC/AQgA0ECNgLwBCADQQI2AuQEIANBAjYC2AQgA0ECNgLMBCADQQI2AsAEIANBAjYCtAQgA0ECNgKoBCADQQI2ApwEIANBAjYCkAQgA0ECNgKEBCADQQI2AvgDQQAhBCADQfgDaiEGA0ACQCADQfYDaiAEEMuIgIAARQ0AIANByAVqIANB2ANqEMOBgIAAIAMoAswFIQUCQCADKALIBQ0AIANByAVqIANB2ANqIAUQx4iAgAAgAygC0AUhByADKALMBSEJAkAgAygCyAVFDQAgA0H4AWpBDGogBzYCACADQYACaiAJNgIAIANBiAJqIANByAVqQQxqKQIANwMAIANBAToA/AEgA0EFNgL4AQwMCyAGQQhqIAc2AgAgBkEEaiAJNgIAIAYgBUEgRzYCAAwBCyADQfgBakEIaiAFNgIAIANBhAJqIANByAVqQQhqKQMANwIAIANBjAJqIANB2AVqKAIANgIAIANBAToA/AEgA0EFNgL4AQwKCyAGQQxqIQYgBEEBaiIEQRBHDQALQQQhBiADQfgBakEEciALIAogCBDiiICAACADQZQCaiADQfgDakHAARC8kYCAABogAyANNwKMAiADIAw2AogCDAILAkAgAygC4AMiByACTw0AIAEgB2otAABBD00NASADQQA6APwBDAgLIAcgAkGg3MCAABC3kICAAAALIANB+ANqIANB2ANqIAZBAWpBAXYQx4iAgAAgAygC+AMNBCADQYAEaigCACEGIAMoAvwDIQcCQAJAIAQNACADQfgDaiADQdgDahDDgYCAACADKAL4Aw0EIANB+ANqIANB2ANqIAMoAvwDEMeIgIAAIAMoAvgDDQUgA0GABGooAgAhBCADKAL8AyEIQQAhCQwBCyADQfgDaiADQdgDakEgEMeIgIAAIAMoAvgDDQYgA0GABGooAgAhBCADKAL8AyEIQQEhCQsgA0H4AWpBBHIgByAGIAUQ4oiAgAAgAyAENgKQAiADIAg2AowCIAMgCTYCiAJBASEGCyADIAY2AvgBCyADQegBaiIEIANB+AFqQQxqKQIANwMAIANB8AFqIgUgA0H4AWpBFGooAgA2AgAgAyADKQL8ATcD4AEgA0EYaiADQfgBakEYakHEARC8kYCAABogA0EMaiAEKQMANwIAIANBFGogBSgCADYCACADIAY2AgAgAyADKQPgATcCBCAAIAMgASACEOOIgIAADAULIANB+AFqQQhqIAMoAvwDNgIAIANBhAJqIANB+ANqQQhqKQMANwIAIANBjAJqIANBiARqKAIANgIAIANBAToA/AEMAwsgA0GAAmogAykC/AM3AwAgA0GIAmogA0GEBGopAgA3AwAgA0EBOgD8AQwCCyADQYACaiADKQL8AzcDACADQYgCaiADQYQEaikCADcDACADQQE6APwBDAELIANBgAJqIAMpAvwDNwMAIANBiAJqIANBhARqKQIANwMAIANBAToA/AELIANB4AFqQQhqIANBhAJqKQIAIg03AwAgA0HgAWpBEGogA0GMAmooAgAiAjYCACADIAMpAvwBIg43A+ABIABBEGogAjYCACAAQQhqIA03AgAgACAONwIAIABBBzYCzAELIANB4AVqJICAgIAAC4ABAQN/IABBDGooAgAiASAAQQhqKAIAIgJrQQxuIQMCQCABIAJGDQAgA0EMbCEBA0ACQCACQQRqKAIAIgNFDQAgAigCACADQQEQt4WAgAALIAJBDGohAiABQXRqIgENAAsLAkAgACgCBCICRQ0AIAAoAgAgAkEMbEEEELeFgIAACwuEAgEGfyAAQQxqKAIAIgEgAEEIaigCACICa0GQAW4hAwJAIAEgAkYNACACIANBkAFsaiEEA0ACQCACQSxqKAIAIgNFDQAgAkEkaigCACEBIANBFGwhBQNAAkACQAJAAkAgAS0AAA4EAAAAAQMLIAFBCGohAwwBCyABQQRqIQMLIANBBGooAgAiBkUNACADKAIAIAZBARC3hYCAAAsgAUEUaiEBIAVBbGoiBQ0ACwsgAkGQAWohAQJAIAJBKGooAgAiA0UNACACKAIkIANBFGxBBBC3hYCAAAsgASECIAEgBEcNAAsLAkAgACgCBCIBRQ0AIAAoAgAgAUGQAWxBBBC3hYCAAAsLkAEBAX8jgICAgABBwABrIgQkgICAgAAgBEEIakEUakEBNgIAIARBKGpBFGpBADYCACAEQgE3AgwgBEHs28CAADYCCCAEQYGAgIAANgIkIARBzNfAgAA2AjggBEIBNwIsIARBiNzAgAA2AiggBCAEQSBqNgIYIAQgBEEoajYCICAEQQhqQZDcwIAAELaQgIAAAAuQAQEBfyOAgICAAEHAAGsiBCSAgICAACAEQQhqQRRqQQE2AgAgBEEoakEUakEANgIAIARCATcCDCAEQezbwIAANgIIIARBgYCAgAA2AiQgBEHM18CAADYCOCAEQgE3AiwgBEGI3MCAADYCKCAEIARBIGo2AhggBCAEQShqNgIgIARBCGpB0NzAgAAQtpCAgAAAC54QAQh/I4CAgIAAQTBrIgYkgICAgAACQAJAAkACQAJAAkACQAJAIAUoAgAiB0F/ag4CAQACCyACQQF2QQRqIghBf0oiCUUNBAJAIAggCRC2hYCAACIKRQ0AIABBADYCCCAAIAg2AgQgACAKNgIAIAYgAjYCDCAGQQE7AQggBkEIaiAAEPCAgIAAIAEoAgghAiABKAIEIQogASgCACEJAkAgAS0ADA0AIAkgAk8NBCACIAlrIQggCiAJaiECIAAoAgghAQNAIAItAAAhCQJAIAEgACgCBEcNACAAIAFBARC6gICAAAsgACABQQFqIgo2AgggACgCACABaiAJOgAAIAJBAWohAiAKIQEgCEF/aiIIDQAMBQsLQQAgAiAJayIIIAggAksbIQIgCiAJaiEIIAEtAA1BD3EhCSAAKAIIIQEDQAJAIAEgACgCBEcNACAAIAFBARC6gICAAAsgACABQQFqIgo2AgggACgCACABaiAJOgAAIAJFDQQgAkF/aiECIAgtAAAhCSAIQQFqIQggCiEBDAALCyAIIAkQqJCAgAAACyACQQF2QQRqIghBf0oiCUUNAwJAIAggCRC2hYCAACIKRQ0AIABBADYCCCAAIAg2AgQgACAKNgIAIAZBAzoACCAGIAI2AgwgBkEIaiAAEPCAgIAAIAEoAgghAiABKAIEIQogASgCACEJAkAgAS0ADA0AIAkgAk8NAyACIAlrIQggCiAJaiECIAAoAgghAQNAIAItAAAhCQJAIAEgACgCBEcNACAAIAFBARC6gICAAAsgACABQQFqIgo2AgggACgCACABaiAJOgAAIAJBAWohAiAKIQEgCEF/aiIIDQAMBAsLQQAgAiAJayIIIAggAksbIQIgCiAJaiEIIAEtAA1BD3EhCSAAKAIIIQEDQAJAIAEgACgCBEcNACAAIAFBARC6gICAAAsgACABQQFqIgo2AgggACgCACABaiAJOgAAIAJFDQMgAkF/aiECIAgtAAAhCSAIQQFqIQggCiEBDAALCyAIIAkQqJCAgAAACyACQQF2QQRqIghBf0oiCUUNAiAIIAkQtoWAgAAiCkUNASAAQQA2AgggACAINgIEIAAgCjYCACAGIAI2AgwgBkGBAjsBCCAGQQhqIAAQ8ICAgAAgASgCCCECIAEoAgQhCiABKAIAIQkCQCABLQAMDQAgCSACTw0BIAIgCWshCCAKIAlqIQIgACgCCCEBA0AgAi0AACEJAkAgASAAKAIERw0AIAAgAUEBELqAgIAACyAAIAFBAWoiCjYCCCAAKAIAIAFqIAk6AAAgAkEBaiECIAohASAIQX9qIggNAAwCCwtBACACIAlrIgggCCACSxshAiAKIAlqIQggAS0ADUEPcSEJIAAoAgghAQNAAkAgASAAKAIERw0AIAAgAUEBELqAgIAACyAAIAFBAWoiCjYCCCAAKAIAIAFqIAk6AAAgAkUNASACQX9qIQIgCC0AACEJIAhBAWohCCAKIQEMAAsLIABBCGoiAigCACILIQECQCALIAAoAgRHDQAgACALEKmAgIAAIAIoAgAhAQsgACgCACABakEAOgAAIAIgAigCAEEBaiIBNgIAAkAgASAAKAIERw0AIAAgARCpgICAACAAQQhqKAIAIQELIAAoAgAgAWpBADoAACAAQQhqIgEgASgCAEEBaiIKNgIAAkACQCAHDgMAAQUACyAFKAIEIQggBiAFQQhqKAIAIgI2AgggBkEIaiAAEOaBgIAAAkAgACgCBCABKAIAIgFrIAJPDQAgACABIAIQuoCAgAAgAEEIaigCACEBCyAAKAIAIAFqIAggAhC8kYCAABogASACaiEKDAMLIAUoAgQhAgJAIAAoAgQgCmsgBUEIaigCACIBTw0AIAAgCiABELqAgIAAIABBCGooAgAhCgsgACgCACAKaiACIAEQvJGAgAAaIAogAWohCgwCCyAIIAkQqJCAgAAACxCpkICAAAALIABBCGogCjYCAAsCQAJAAkACQAJAIAMgBEcNAEEAIQhBACEBDAELQQAhCCAGQQhqQRhqIQcgBkEIakEQaiEMIAZBCGpBCGohDUEBIQEDQAJAAkACQCADLQAAIglBA3FBA0YNAEEAIQICQCAJDgMAAQMACyAGQSA2AgggA0EBaiECIAZBCGogABDmgYCAAAJAIAAoAgQgAEEIaiIFKAIAIglrQR9LDQAgACAJQSAQuoCAgAAgBSgCACEJCyAFIAlBIGoiCjYCACAAKAIAIAlqIgkgAikAADcAACAJQQhqIAJBCGopAAA3AAAgCUEQaiACQRBqKQAANwAAIAlBGGogAkEYaikAADcAAAwBCyAHIANBGWopAAA3AwAgDCADQRFqKQAANwMAIA0gA0EJaikAADcDACAGIANBAWopAAA3AwggA0EkaigCACICQSFPDQQgBiACNgIsIAZBLGogABDmgYCAAAJAIAAoAgQgAEEIaiIFKAIAIglrIAJPDQAgACAJIAIQuoCAgAAgBSgCACEJCyAAKAIAIAlqIAZBCGogAhC8kYCAABogBSAJIAJqIgo2AgALIAEhAgsgAUEBdCEBIAIgCHIhCCADQShqIgMgBEcNAAsgCEGA/gNxQQh2IQELIAtBAmohAyALQX1LDQEgAyAKSw0CIAAoAgAgC2oiACABOgABIAAgCDoAACAGQTBqJICAgIAADwsgAkEgQfDcwIAAELmQgIAAAAsgCyADQeDcwIAAELyQgIAAAAsgAyAKQeDcwIAAELmQgIAAAAvkBwEEfyOAgICAAEEQayIEJICAgIAAAkACQAJAAkAgAygCAEEBRg0AIAJBAXZBBGoiBUF/SiIGRQ0DAkAgBSAGELaFgIAAIgdFDQAgAEEANgIIIAAgBTYCBCAAIAc2AgAgBEECOgAIIAQgAjYCDCAEQQhqIAAQ8ICAgAAgASgCCCECIAEoAgQhByABKAIAIQYCQAJAIAEtAAwNACAGIAJPDQEgAiAGayEFIAcgBmohAiAAKAIIIQEDQCACLQAAIQYCQCABIAAoAgRHDQAgACABQQEQuoCAgAALIAAgAUEBaiIHNgIIIAAoAgAgAWogBjoAACACQQFqIQIgByEBIAVBf2oiBQ0ADAILC0EAIAIgBmsiBSAFIAJLGyECIAcgBmohBSABLQANQQ9xIQYgACgCCCEBA0ACQCABIAAoAgRHDQAgACABQQEQuoCAgAALIAAgAUEBaiIHNgIIIAAoAgAgAWogBjoAACACRQ0BIAJBf2ohAiAFLQAAIQYgBUEBaiEFIAchAQwACwsgAygCBCEFIAQgA0EIaigCACIBNgIIIARBCGogABDmgYCAAAJAIAAoAgQgACgCCCICayABTw0AIAAgAiABELqAgIAAIAAoAgghAgsgACgCACACaiAFIAEQvJGAgAAaIAAgAiABajYCCAwCCyAFIAYQqJCAgAAACyACQQF2QQRqIgVBf0oiBkUNAiAFIAYQtoWAgAAiB0UNASAAQQA2AgggACAFNgIEIAAgBzYCACAEQQQ6AAggBCACNgIMIARBCGogABDwgICAACABKAIIIQIgASgCBCEHIAEoAgAhBQJAAkAgAS0ADA0AAkAgBSACSQ0AIAAoAgghBQwCCyACIAVrIQYgByAFaiECIAAoAgghAQNAIAItAAAhBwJAIAEgACgCBEcNACAAIAFBARC6gICAAAsgACABQQFqIgU2AgggACgCACABaiAHOgAAIAJBAWohAiAFIQEgBkF/aiIGDQAMAgsLQQAgAiAFayIGIAYgAksbIQIgByAFaiEFIAEtAA1BD3EhBiAAKAIIIQEDQAJAIAEgACgCBEcNACAAIAFBARC6gICAAAsgACABQQFqIgc2AgggACgCACABaiAGOgAAAkAgAkUNACACQX9qIQIgBS0AACEGIAVBAWohBSAHIQEMAQsLIAFBAWohBQsgAygCBCECAkAgACgCBCAFayADQQhqKAIAIgFPDQAgACAFIAEQuoCAgAAgACgCCCEFCyAAKAIAIAVqIAIgARC8kYCAABogACAFIAFqNgIICyAEQRBqJICAgIAADwsgBSAGEKiQgIAAAAsQqZCAgAAAC4sDAQN/I4CAgIAAQdAAayIEJICAgIAAQQAhBQJAIANBAkkNAEEAIAJBAmpBtNXAgAAgAkECELqRgIAAGyEFCyADQX5qIAMgBRshAwJAAkACQAJAIAEoAgAiBkUNACADIAFBDGooAgBBAXRLDQIgAyABKAIEQQF0Sw0BDAILIAMgAUEIaigCAEEBdEcNAQsgBCAFIAIgBRsgAyABQQhBBCAGG2ooAgAgAUEMQQggBhtqKAIAIAVBAEcQy46AgAAgBCgCBCEBAkAgBCgCACIFQYGAxABHDQAgACABNgIEIABBFTYCAAwCCyAEIAE2AgwgBCAFNgIIIARBADYCGCAEQgE3AxAgBEEgaiAEQRBqQZDWwIAAEOyQgIAAAkAgBEEIaiAEQSBqEMqOgIAADQAgACAEKQMQNwIEIABBDGogBEEYaigCADYCACAAQRQ2AgAMAgtBqNbAgABBNyAEQcgAakHg1sCAAEG818CAABDakICAAAALIAAgAyABEOKCgIAACyAEQdAAaiSAgICAAAu8BQUBfwF+BH8BfgF/I4CAgIAAQcAAayIDJICAgIAAIANBKGogARDRjoCAAAJAAkACQAJAIAMoAihFDQAgAykCLCEEIABBDGogA0EoakEMaikCADcCACAAIAQ3AgQgAEEBNgIADAELAkACQCADQTBqKAIAQRRuQcwBIAMoAixBAUYbIgUgAiAFIAJJGyIFDQBBBCEGDAELIAVB5syZM0sNAyAFQRRsIgdBAEgNAyAHIAVB58yZM0lBAnQiCBC2hYCAACIGRQ0CCyADQQA2AgggAyAFNgIEIAMgBjYCAAJAIAJFDQAgA0EoakEBciEGA0AgA0EoaiABEOeBgIAAAkAgAy0AKCIHQQVHDQAgA0EbaiADQShqQQxqKQIAIgQ3AAAgAyADKQIsIgk3ABMgAEEMaiAENwAAIAAgCTcABCAAQQE2AgACQCADKAIIIgZFDQAgAygCACEFIAZBFGwhAgNAAkACQAJAAkAgBS0AAA4EAAAAAQMLIAVBCGohBgwBCyAFQQRqIQYLIAZBBGooAgAiB0UNACAGKAIAIAdBARC3hYCAAAsgBUEUaiEFIAJBbGoiAg0ACwsgAygCBCIFRQ0DIAMoAgAgBUEUbEEEELeFgIAADAMLIANBEGpBD2oiCCAGQQ9qKAAANgAAIANBEGpBCGoiCiAGQQhqKQAANwMAIAMgBikAADcDEAJAIAMoAggiBSADKAIERw0AIAMgBRCqgICAACADKAIIIQULIAMoAgAgBUEUbGoiBSADKQMQNwABIAUgBzoAACAFQQlqIAopAwA3AAAgBUEQaiAIKAAANgAAIAMgAygCCEEBajYCCCACQX9qIgINAAsLIAAgAykDADcCBCAAQQA2AgAgAEEMaiADQQhqKAIANgIACyADQcAAaiSAgICAAA8LIAcgCBCokICAAAALEKmQgIAAAAusBQQBfwF+BH8BfiOAgICAAEHQAGsiAySAgICAACADQThqIAEQ0Y6AgAACQAJAIAMoAjhFDQAgAykCPCEEIABBDGogA0E4akEMaikCADcCACAAIAQ3AgQgAEEBNgIADAELAkACQAJAAkACQCADQcAAaigCAEEMbkHVAiADKAI8QQFGGyIFIAIgBSACSRsiBQ0AQQQhBgwBCyAFQarVqtUASw0BIAVBDGwiB0EASA0BIAcgBUGr1arVAElBAnQiCBC2hYCAACIGRQ0CCyADQQA2AgggAyAFNgIEIAMgBjYCAAJAIAJFDQAgA0E4akEEciEIIANBIGpBBHIhBgNAIANBOGogARDEgYCAAAJAIAMoAjhFDQAgBiAIKQIANwIAIAZBCGogCEEIaikCADcCAAwFCyADQSBqIAEgAygCPBDwgoCAACADKAIgDQQgA0EQakEIaiIHIAZBCGooAgA2AgAgAyAGKQIANwMQAkAgAygCCCIFIAMoAgRHDQAgAyAFEK+AgIAAIAMoAgghBQsgAygCACAFQQxsaiIFIAMpAxA3AgAgBUEIaiAHKAIANgIAIAMgAygCCEEBajYCCCACQX9qIgINAAsLIAAgAykDADcCBCAAQQA2AgAgAEEMaiADQQhqKAIANgIADAMLEKmQgIAAAAsgByAIEKiQgIAAAAsgA0EQakEIaiAGQQhqKQIAIgQ3AwAgAyAGKQIAIgk3AxAgAEEMaiAENwIAIAAgCTcCBCAAQQE2AgACQCADKAIIIgFFDQAgAygCACEFIAFBDGwhAQNAAkAgBUEEaigCACICRQ0AIAUoAgAgAkEBELeFgIAACyAFQQxqIQUgAUF0aiIBDQALCyADKAIEIgVFDQAgAygCACAFQQxsQQQQt4WAgAALIANB0ABqJICAgIAAC4kGAgh/An4jgICAgABB0ABrIgMkgICAgAAgA0E4aiABENGOgIAAAkACQAJAAkACQAJAAkACQCADKAI4DQACQCADKAI8IgRFDQAgA0HAAGooAgAgAkkNBgsgBA0BIAJBgCBJDQFBASEFQQAhBkEAIQQCQANAIAJBgCAgAkGAIEkbIgcgBGohCAJAIAYgBGsgB08NACAHIARqIARJDQYgCEF/c0EfdiEJAkACQCAGDQBBACEKDAELIAMgBjYCPCADIAU2AjhBASEKCyADIAo2AkAgA0EoaiAIIAkgA0E4ahCmgICAACADKAIsIQoCQCADKAIoDQAgCiEFIAghBgwBCyADKAIwIglBgYCAgHhGDQAgCUUNBiAKIAkQqJCAgAAACyAIIARJDQEgA0E4aiABIAUgBGogBxDSjoCAAAJAIAMoAjgNACACQYAgSyEKIAghBEEAIAIgB2siByAHIAJLGyECIAoNAQwFCwsgA0EQakEMaiADQThqQQxqKQIANwIAIAMgAykCPDcCFCAGRQ0HIAUgBkEBELeFgIAADAcLIAQgCEGU3sCAABC4kICAAAALIANBEGpBDGogA0E4akEMaikCADcCACADIAMpAjw3AhQMBQsCQAJAIAINAEEBIQUMAQsgAkF/SiIERQ0CIAIgBBC5hYCAACIFRQ0DCyADQThqIAEgBSACENKOgIAAAkAgAygCOA0AIAIhCCACIQYMAQsgA0EQakEMaiADQThqQQxqKQIANwIAIAMgAykCPDcCFCACRQ0EIAUgAkEBELeFgIAADAQLIANBEGpBCGogBjYCACADQQhqIAg2AgAgAyAFNgIUIAMgAykCFCILNwMAIABBDGogCDYCACAAIAs3AgQgAEEANgIADAQLEKmQgIAAAAsgAiAEEKiQgIAAAAsgA0EQakEEckGQ3cCAAEEgENuOgIAACyADQQhqIANBEGpBDGopAgAiCzcDACADIAMpAhQiDDcDACAAQQxqIAs3AgAgACAMNwIEIABBATYCAAsgA0HQAGokgICAgAALjgQEAX8BfgR/AX4jgICAgABBoAJrIgMkgICAgAAgA0GYAWogARDRjoCAAAJAAkACQAJAIAMoApgBRQ0AIAMpApwBIQQgAEEMaiADQZgBakEMaikCADcCACAAIAQ3AgQgAEEBNgIADAELAkACQCADQaABaigCAEGEAW5BHyADKAKcAUEBRhsiBSACIAUgAkkbIgUNAEEEIQYMAQsgBUGP/OAHSw0CIAVBhAFsIgdBAEgNAiAHIAVBkPzgB0lBAnQiCBC2hYCAACIGRQ0DCyADQQA2AgggAyAFNgIEIAMgBjYCAAJAIAJFDQAgA0GYAWpBBHIhBgNAIANBmAFqIAEQmoOAgAACQCADKAKYAUUNACADQRBqQQhqIAZBCGopAgAiBDcDACADIAYpAgAiCTcDECAAQQxqIAQ3AgAgACAJNwIEIABBATYCACADKAIEIgVFDQMgAygCACAFQYQBbEEEELeFgIAADAMLIANBEGogBkGEARC8kYCAABoCQCADKAIIIgUgAygCBEcNACADIAUQrICAgAAgAygCCCEFCyADKAIAIAVBhAFsaiADQRBqQYQBELyRgIAAGiADIAVBAWo2AgggAkF/aiICDQALCyAAIAMpAwA3AgQgAEEANgIAIABBDGogA0EIaigCADYCAAsgA0GgAmokgICAgAAPCxCpkICAAAALIAcgCBCokICAAAALgwUFAX8BfgR/AX4EfyOAgICAAEHwAGsiAySAgICAACADQcAAaiABENGOgIAAAkACQAJAAkAgAygCQEUNACADKQJEIQQgAEEMaiADQcAAakEMaikCADcCACAAIAQ3AgQgAEEBNgIADAELQQghBQJAIANBwABqQQhqKAIAQShuQeYAIAMoAkRBAUYbIgYgAiAGIAJJGyIGRQ0AIAZBs+bMGUsNAiAGQShsIgdBAEgNAiAHIAZBtObMGUlBA3QiCBC2hYCAACIFRQ0DCyADQQA2AgggAyAGNgIEIAMgBTYCAAJAIAJFDQAgA0EUaiEGIANBwABqQQhqIQUDQCADQcAAaiABENGBgIAAAkAgAygCQEUNACADQRBqQQhqIANBwABqQQxqKQIAIgQ3AwAgAyADKQJEIgk3AxAgAEEMaiAENwIAIAAgCTcCBCAAQQE2AgAgAygCBCIGRQ0DIAMoAgAgBkEobEEIELeFgIAADAMLIAYgBSkCADcCACAGQSBqIgogBUEgaikCADcCACAGQRhqIgsgBUEYaikCADcCACAGQRBqIgwgBUEQaikCADcCACAGQQhqIg0gBUEIaikCADcCAAJAIAMoAggiCCADKAIERw0AIAMgCBCrgICAACADKAIIIQgLIAMoAgAgCEEobGoiByAGKQIANwIAIAdBCGogDSkCADcCACAHQRBqIAwpAgA3AgAgB0EYaiALKQIANwIAIAdBIGogCikCADcCACADIAhBAWo2AgggAkF/aiICDQALCyAAIAMpAwA3AgQgAEEANgIAIABBDGogA0EIaigCADYCAAsgA0HwAGokgICAgAAPCxCpkICAAAALIAcgCBCokICAAAALvwYFAX8BfgV/AX4BfyOAgICAAEHwAWsiAySAgICAACADQYABaiABENGOgIAAAkACQAJAAkAgAygCgAFFDQAgAykChAEhBCAAQQxqIANBgAFqQQxqKQIANwIAIAAgBDcCBCAAQQE2AgAMAQsCQAJAIANBiAFqKAIAQfAAbkEkIAMoAoQBQQFGGyIFIAIgBSACSRsiBQ0AQQQhBgwBCyAFQcmkkglLDQMgBUHwAGwiB0EASA0DIAcgBUHKpJIJSUECdCIIELaFgIAAIgZFDQILIANBADYCECADIAU2AgwgAyAGNgIIAkAgAkUNACADQYABakEYaiEJIANBgAFqQQhqIQYDQCADQYABaiABEMqBgIAAAkAgAygChAEiBw0AIANB8ABqQQhqIAZBCGopAgAiBDcDACADIAYpAgAiCjcDcCAAQQxqIAQ3AgAgACAKNwIEIABBATYCAAJAIAMoAhAiBUUNACADKAIIIgggBUHwAGxqIQsDQAJAIAhBDGooAgAiAkUNACAIKAIEIQUgAkEUbCEGA0ACQAJAAkACQCAFLQAADgQAAAABAwsgBUEIaiECDAELIAVBBGohAgsgAkEEaigCACIHRQ0AIAIoAgAgB0EBELeFgIAACyAFQRRqIQUgBkFsaiIGDQALCyAIQfAAaiEFAkAgCEEIaigCACICRQ0AIAgoAgQgAkEUbEEEELeFgIAACyAFIQggBSALRw0ACwsgAygCDCIFRQ0DIAMoAgggBUHwAGxBBBC3hYCAAAwDCyADQfAAakEIaiIIIAZBCGopAgA3AwAgAyAGKQIANwNwIAMoAoABIQsgA0EYaiAJQdgAELyRgIAAGgJAIAMoAhAiBSADKAIMRw0AIANBCGogBRC1gICAACADKAIQIQULIAMoAgggBUHwAGxqIgUgBzYCBCAFIAs2AgAgBSADKQNwNwIIIAVBEGogCCkDADcCACAFQRhqIANBGGpB2AAQvJGAgAAaIAMgAygCEEEBajYCECACQX9qIgINAAsLIAAgAykDCDcCBCAAQQA2AgAgAEEMaiADQRBqKAIANgIACyADQfABaiSAgICAAA8LIAcgCBCokICAAAALEKmQgIAAAAuJAQECfyOAgICAAEEQayICJICAgIAAIAAoAgAiAEEIaigCACEDIAAoAgAhACACIAEQ/5CAgAACQCADRQ0AIANBKGwhAwNAIAIgADYCDCACIAJBDGpBnJbAgAAQ4ZCAgAAaIABBKGohACADQVhqIgMNAAsLIAIQ4pCAgAAhACACQRBqJICAgIAAIAALggEBAn8jgICAgABBEGsiAiSAgICAACAAKAIAIgBBCGooAgAhAyAAKAIAIQAgAiABEP+QgIAAAkAgA0UNAANAIAIgADYCDCACIAJBDGpBrJbAgAAQ4ZCAgAAaIABBAWohACADQX9qIgMNAAsLIAIQ4pCAgAAhACACQRBqJICAgIAAIAAL3wEBBX8jgICAgABBEGsiAiSAgICAACAAKAIAIgAoAgAhAyACIABBCGooAgAiADYCACACIAEQ5oGAgAACQCAARQ0AIABBFGwhBCABKAIIIQADQCACIAMQm46AgAAgAigCACEFAkAgASgCBCAAayACKAIIIgZPDQAgASAAIAYQuoCAgAAgASgCCCEACyABKAIAIABqIAUgBhC8kYCAABogASAAIAZqIgA2AggCQCACKAIEIgZFDQAgBSAGQQEQt4WAgAALIANBFGohAyAEQWxqIgQNAAsLIAJBEGokgICAgAAL4gMCDH8EfiOAgICAAEHQAGsiAySAgICAAAJAIAAoAgQgACgCCCIEayABTw0AIAAgBCABELyAgIAAIAAoAgghBAsgACgCACAEQShsaiEFAkAgAUECSQ0AIAFBf2ohBiACQQFqIQcgA0EoakEBciEIIANBCGohCSADQRBqIQogA0EYaiELIANBH2ohDANAQQIhDQJAIAItAAAiDkECRg0AIAggBxDDjoCAAAJAAkAgDg0AQQAhDQwBCyADIAIoAiQ2AkxBASENCyAMIAhBH2opAAA3AAAgCyAIQRhqKQAANwMAIAogCEEQaikAADcDACAJIAhBCGopAAA3AwAgAyAIKQAANwMACyAFIA06AAAgBSADKQMANwABIAVBCWogCSkDADcAACAFQRFqIAopAwA3AAAgBUEZaiALKQMANwAAIAVBIGogDCkAADcAACAFQShqIQUgBkF/aiIGDQALIAEgBGpBf2ohBAsCQCABRQ0AIAJBCGopAgAhDyACQRBqKQIAIRAgAkEYaikCACERIAIpAgAhEiAFQSBqIAJBIGopAgA3AgAgBUEYaiARNwIAIAVBEGogEDcCACAFQQhqIA83AgAgBSASNwIAIARBAWohBAsgACAENgIIIANB0ABqJICAgIAAC78CAQd/AkACQAJAIAAoAggiAw0AQQAhBEEAIQUMAQsgAigCACIGQX9zIQcgACgCACEEQQAhCANAAkACQCAEKAIAIgUoAgAiCSAGTQ0AIAkgB2oiCSAFQQxqKAIATw0AIAUoAgQgCUEFdGogAUEgELqRgIAARQ0BC0EBIQUgCEEBaiEEDAILIARBBGohBCADIAhBAWoiCEcNAAtBACEFDAELIAQgA0YNACADIARrIQggACgCACAEQQJ0aiEEIAIoAgAiB0F/cyECA0ACQAJAAkAgBCgCACIJKAIAIgYgB00NACAGIAJqIgYgCUEMaigCAE8NACAJKAIEIAZBBXRqIAFBIBC6kYCAAEUNAQsgBUEBaiEFDAELIAQgBUECdGsgCTYCAAsgBEEEaiEEIAhBf2oiCA0ACwsgACADIAVrNgIIC8QJAwJ/AX4IfyOAgICAAEHQAWsiAiSAgICAACACQQhqQRBqIAFBEGooAgAiAzYCACACQQhqQQhqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBmAFqIAJBCGogAkHIAWogAxCQgoCAAAJAAkACQAJAIAIpA5gBIgRCAlENACACQfAAakEgaiIBIAJBwAFqKQMANwMAIAJB8ABqQRhqIgMgAkGYAWpBIGopAwA3AwAgAkHwAGpBEGogAkGYAWpBGGopAwA3AwAgAkHwAGpBCGogAkGYAWpBEGopAwA3AwAgAiACKQOgATcDcCAEQgBSDQELIABBADYCCCAAQgg3AgAgAigCFCIDIAIoAhAiAWtBGG4hBQJAIAMgAUYNACAFQRhsIQMgAUEIaiEBA0ACQCABQQRqKAIAIgVFDQAgASgCACAFQQEQt4WAgAALIAFBGGohASADQWhqIgMNAAsLIAIoAgwiAUUNASACKAIIIAFBGGxBCBC3hYCAAAwBCyACQcgAakEgaiABKQMANwMAIAJByABqQRhqIAMpAwA3AwAgAkHIAGpBEGoiASACQfAAakEQaikDADcDACACQcgAakEIaiIDIAJB8ABqQQhqKQMANwMAIAIgAikDcDcDSEGgAUEIELaFgIAAIgZFDQEgBiACKQNINwMAIAZBIGogAkHIAGpBIGoiBykDADcDACAGQRhqIAJByABqQRhqIggpAwA3AwAgBkEQaiABKQMANwMAIAZBCGogAykDADcDACACQoSAgIAQNwIkIAIgBjYCICACQTBqQRBqIAJBCGpBEGooAgAiATYCACACQTBqQQhqIAJBCGpBCGopAwA3AwAgAiACKQMINwMwIAJBmAFqIAJBMGogAkHIAWogARCQgoCAAAJAIAIpA5gBIgRCAlENACACQZgBakEIaiEBQSghCUEBIQUDQCACQfAAakEgaiIDIAFBIGopAwA3AwAgAkHwAGpBGGoiCiABQRhqKQMANwMAIAJB8ABqQRBqIgsgAUEQaikDADcDACACQfAAakEIaiIMIAFBCGopAwA3AwAgAiABKQMANwNwIARQDQEgByADKQMANwMAIAggCikDADcDACACQcgAakEQaiIKIAspAwA3AwAgAkHIAGpBCGoiCyAMKQMANwMAIAIgAikDcDcDSAJAIAUgAigCJEcNACACQSBqIAVBARC7gICAACACKAIgIQYLIAYgCWoiAyACKQNINwMAIANBIGogBykDADcDACADQRhqIAgpAwA3AwAgA0EQaiAKKQMANwMAIANBCGogCykDADcDACACIAVBAWoiBTYCKCACQZgBaiACQTBqIAJByAFqIAIoAkAQkIKAgAAgCUEoaiEJIAIpA5gBIgRCAlINAAsLIAIoAjwiAyACKAI4IgFrQRhuIQUCQCADIAFGDQAgBUEYbCEDIAFBCGohAQNAAkAgAUEEaigCACIFRQ0AIAEoAgAgBUEBELeFgIAACyABQRhqIQEgA0FoaiIDDQALCwJAIAIoAjQiAUUNACACKAIwIAFBGGxBCBC3hYCAAAsgACACKQMgNwIAIABBCGogAkEgakEIaigCADYCAAsgAkHQAWokgICAgAAPC0GgAUEIEKiQgIAAAAvLAwEFfwJAAkACQCACRQ0AIAJBDGwiA0F0aiIEQQxuQQFqIgVBB3EhBiAEQdQATw0BQQAhBSABIQQMAgsgAEEANgIIIABCATcCAA8LIAFB3ABqIQQgBUH4////A3EhB0EAIQUDQCAEKAIAIARBdGooAgAgBEFoaigCACAEQVxqKAIAIARBUGooAgAgBEFEaigCACAEQbh/aigCACAEQax/aigC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dHIhCiAJIAsgDRC8kYCAABogDkGAfnEgDHIhDkECIQggDSELDAELIAFBBGooAgAhDQJAAkAgAUEMaigCACIJDQBBASEODAELIAlBf0wNCCAJQQEQtoWAgAAiDkUNCQsgDiANIAkQvJGAgAAaQQMhCCAJIQ0LIAUgA2oiASAIOgAAIAFBA2ogCkEQdjoAACABQQFqIAo7AAAgAUEQaiALNgIAIAFBDGogDTYCACABQQhqIAk2AgAgAUEEaiAONgIAIANBFGohAyAHQX9qIgcNAAsLIAAgAjYCCA8LIAMgARCokICAAAALIA1BARCokICAAAALIA1BARCokICAAAALIA1BARCokICAAAALEKmQgIAAAAsgCUEBEKiQgIAAAAsgAiACQYDfwIAAELeQgIAAAAvcAgQEfwF+AX8DfgJAIAFBCGooAgAiAg0AIABCCDcCACAAIAI2AggPCwJAAkACQCACQarVqhVLDQAgAkEwbCIDQQBIDQAgASgCACEEIAJBq9WqFUlBA3QhBQJAAkAgAw0AIAUhAQwBCyADIAUQtoWAgAAhAQsgAUUNASAAIAI2AgQgACABNgIAIAJBMGwhAyACIQUCQANAIANFDQEgBUUNBCAEQSBqKQMAIQYgBEEoaigCACEHIARBCGopAwAhCCAEQRBqKQMAIQkgBCkDACEKIAFBGGogBEEYaikDADcDACABQRBqIAk3AwAgAUEIaiAINwMAIAEgCjcDACABQShqIAc2AgAgAUEgaiAGNwMAIAFBMGohASADQVBqIQMgBEEwaiEEIAVBf2oiBQ0ACwsgACACNgIIDwsQqZCAgAAACyADIAUQqJCAgAAACyACIAJBgN/AgAAQt5CAgAAAC8ECAgR/BH4CQCABQQhqKAIAIgINACAAQgg3AgAgACACNgIIDwsCQAJAAkAgAkGz5swZSw0AIAJBKGwiA0EASA0AIAEoAgAhBCACQbTmzBlJQQN0IQUCQAJAIAMNACAFIQEMAQsgAyAFELaFgIAAIQELIAFFDQEgACACNgIEIAAgATYCACACQShsIQMgAiEFAkADQCADRQ0BIAVFDQQgBEEIaikDACEGIARBEGopAwAhByAEKQMgIQggBCkDACEJIAFBGGogBEEYaikDADcDACABQRBqIAc3AwAgAUEIaiAGNwMAIAEgCTcDACABQSBqIAg3AwAg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QRBqIg8gECkCADcDACACQegAakEIaiIQIBEpAgA3AwAgAiABKQIANwNoAkAgByACKAI0Rw0AIAJBMGogByACKAJgQQFqIgVBfyAFGxC4gICAACACKAIwIRMLIBMgC2oiDEFYaiIFIAIpA2g3AwAgECkDACEEIA8pAwAhBiANKQMAIQggDCAONgIAIAxBeGogAzcDACAFQRhqIAg3AwAgBUEQaiAGNwMAIAVBCGogBDcDACACIAdBAWoiBzYCOCALQTBqIQsgAkHQAWogAkHAAGoQkYSAgAAgAikD8AEiA1BFDQALCyACQcAAahCrhICAACAAQQhqIAJBMGpBCGooAgA2AgAgACACKQMwNwIACyACQYACaiSAgICAAA8LIAUgBxCokICAAAALEKmQgIAAAAvIAgEFfyOAgICAAEEwayICJICAgIAAIAJBCGogAUEIaikCADcDACACIAEpAgA3AwACQAJAAkAgAiACQQxqEI+CgIAAIgENACAAQQA2AgggAEIENwIADAELQRBBBBC2hYCAACIDRQ0BIAMgATYCACACQoSAgIAQNwIUIAIgAzYCECACQSBqQQhqIAJBCGopAwA3AwAgAiACKQMANwMgAkAgAkEgaiACQSxqIgQQj4KAgAAiBUUNAEEEIQZBASEBA0ACQCABIAIoAhRHDQAgAkEQaiABQQEQt4CAgAAgAigCECEDCyADIAZqIAU2AgAgAiABQQFqIgE2AhggBkEEaiEGIAJBIGogBBCPgoCAACIFDQALCyAAIAIpAxA3AgAgAEEIaiACQRBqQQhqKAIANgIACyACQTBqJICAgIAADwtBEEEEEKiQgIAAAAvIAgEFfyOAgICAAEEwayICJICAgIAAIAJBCGogAUEIaikCADcDACACIAEpAgA3AwACQAJAAkAgAiACQQxqEI+CgIAAIgENACAAQQA2AgggAEIENwIADAELQRBBBBC2hYCAACIDRQ0BIAMgATYCACACQoSAgIAQNwIUIAIgAzYCECACQSBqQQhqIAJBCGopAwA3AwAgAiACKQMANwMgAkAgAkEgaiACQSxqIgQQj4KAgAAiBUUNAEEEIQZBASEBA0ACQCABIAIoAhRHDQAgAkEQaiABQQEQt4CAgAAgAigCECEDCyADIAZqIAU2AgAgAiABQQFqIgE2AhggBkEEaiEGIAJBIGogBBCP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IAkgBkEBELeFgIAACyAIKAIQDQECQCABKAIIIgkgASgCBEcNACABIAkQqYCAgAAgASgCCCEJCyABKAIAIAlqQf0AOgAAIABBADYCACABIAEoAghBAWo2AggMAgsgCEEoaiAIQRBqQQxqKAIAIgE2AgAgCCAIKQIUIgo3AyAgAEEMaiABNgIAIAAgCjcCBCAAQQE2AgAMAQsgCEEIaiAIQRBqQQxqKAIAIgE2AgAgCCAIKQIUIgo3AwAgAEEMaiABNgIAIAAgCjcCBCAAQQE2AgALIAhBMGokgICAgAALmgMCAn8BfiOAgICAAEEgayIIJICAgIAAAkAgASgCCCIJIAEoAgRHDQAgASAJEKmAgIAAIAEoAgghCQsgASgCACAJakH7ADoAACABIAEoAghBAWo2AgggCEEQaiABIAUgBhD5hoCAAAJAAkACQCAIKAIQDQACQCABKAIIIgkgASgCBEcNACABIAkQqYCAgAAgASgCCCEJCyABKAIAIAlqQTo6AAAgASABKAIIQQFqNgIIIAhBEGogASAHKAIAIAdBCGooAgAQ+YaAgAAgCCgCEA0BAkAgASgCCCIJIAEoAgRHDQAgASAJEKmAgIAAIAEoAgghCQsgASgCACAJakH9ADoAACAAQQA2AgAgASABKAIIQQFqNgIIDAILIAhBCGogCEEQakEMaigCACIBNgIAIAggCCkCFCIKNwMAIABBDGogATYCACAAIAo3AgQgAEEBNgIADAELIAhBCGogCEEQakEMaigCACIBNgIAIAggCCkCFCIKNwMAIABBDGogATYCACAAIAo3AgQgAEEBNgIACyAIQSBqJICAgIAAC5QEAgV/AX4jgICAgABBoAFrIgIkgICAgAAgAkEIahD1hoCAACABKAIAIQMgAkHYAGogAkEIakEBIAFBCGooAgAiBBD8hoCAAAJAAkACQCACKAJYDQAgAkHYAGpBCGotAAAhBSACKAJcIQECQAJAIARFDQAgBEEFdCEGIAVB/wFxRSEEA0ACQCAEQQFxRQ0AAkAgASgCCCIEIAEoAgRHDQAgASAEEKmAgIAAIAEoAgghBAsgASgCACAEakEsOgAAIAEgASgCCEEBajYCCAsgAkHYAGpBAEHCABC5kYCAABogAiACQdgAakHCACADQSBBABDJjoCAACACQcgAaiABIAIoAgAgAigCBBD5hoCAACACKAJIDQIgA0EgaiEDQQEhBCAGQWBqIgYNAAtBACEFCyACQShqIAEgBUH/AXFBAEcQkYeAgAAgAigCKA0CIAAgAikDCDcCBCAAQQA2AgAgAEEMaiACQRBqKAIANgIADAMLIAJBKGpBDGogAkHIAGpBDGooAgA2AgAgAiACKQJMNwIsDAELIAJBKGpBDGogAkHYAGpBDGooAgA2AgAgAiACKQJcNwIsCyACQSBqIAJBKGpBDGooAgAiATYCACACIAIpAiwiBzcDGCAAQQxqIAE2AgAgACAHNwIEIABBATYCACACKAIMIgFFDQAgAigCCCABQQEQt4WAgAALIAJBoAFqJICAgIAAC/kBAgF/AX4jgICAgABBMGsiAiSAgICAACACEPWGgIAAAkACQCABKAIARQ0AIAJBIGogAiACIAIgAkGLjcGAAEECIAEQl4OAgAAMAQsgAkEgaiACIAIgAiACQYaNwYAAQQUgAUEEahCUg4CAAAsCQAJAIAIoAiANACAAIAIpAwA3AgQgAEEANgIAIABBDGogAkEIaigCADYCAAwBCyACQRhqIAJBIGpBDGooAgAiATYCACACIAIpAiQiAzcDECAAQQxqIAE2AgAgACADNwIEIABBATYCACACKAIEIgBFDQAgAigCACAAQQEQt4WAgAALIAJBMGokgICAgAALjwMCAn8BfiOAgICAAEEgayIIJICAgIAAAkAgASgCCCIJIAEoAgRHDQAgASAJEKmAgIAAIAEoAgghCQsgASgCACAJakH7ADoAACABIAEoAghBAWo2AgggCEEQaiABIAUgBhD5hoCAAAJAAkACQCAIKAIQDQACQCABKAIIIgkgASgCBEcNACABIAkQqYCAgAAgASgCCCEJCyABKAIAIAlqQTo6AAAgASABKAIIQQFqNgIIIAhBEGogByABEMaAgIAAIAgoAhANAQJAIAEoAggiCSABKAIERw0AIAEgCRCpgICAACABKAIIIQkLIAEoAgAgCWpB/QA6AAAgAEEANgIAIAEgASgCCEEBajYCCAwCCyAIQQhqIAhBEGpBDGooAgAiATYCACAIIAgpAhQiCjcDACAAQQxqIAE2AgAgACAKNwIEIABBATYCAAwBCyAIQQhqIAhBEGpBDGooAgAiATYCACAIIAgpAhQiCjcDACAAQQxqIAE2AgAgACAKNwIEIABBATYCAAsgCEEgaiSAgICAAAu/FQILfwJ+I4CAgIAAQeAGayIEJICAgIAAIARBADoAECAEQQA2AgwgBEIANwIEIAQgAUEMaigCACIFNgIAIAFBBGooAgAhBiAEIARBDGo2AmwgBCACNgJoIAQgBiAFQYQBbGo2AmQgBCAGNgJgIARBGGogBEHgAGoQjIOAgAAgBCgCGCEHAkACQAJAAkACQCAEKAIgIghFDQAgBygCACEJAkAgCEEBRg0AIAdBBGohBiAIQf7///8DakH/////A3EhCiAJKAIAIQUCQCAIQX9qQQNxIgtFDQAgBSEMA0AgBigCACIFIAkgDCAFKAIAIgVLGyEJIAZBBGohBiAMIAUgDCAFSRsiBSEMIAtBf2oiCw0ACwsgCkEDSQ0AIAcgCEECdGohDQNAIAZBDGooAgAiCyAGQQhqKAIAIgogBkEEaigCACIOIAYoAgAiDCAJIAUgDCgCACIMSxsgBSAMIAUgDEkbIgUgDigCACIMSxsgBSAMIAUgDEkbIgUgCigCACIMSxsgBSAMIAUgDEkbIgUgCygCACIMSxshCSAFIAwgBSAMSRshBSAGQRBqIgYgDUcNAAsLIARB4ABqIAlBBGoQw46AgAAgCSgCACEGIARBKGpBCGogBEHgAGpBCGoiCykDADcDACAEQShqQRBqIARB4ABqQRBqIgopAwA3AwAgBEEoakEYaiAEQeAAakEYaiIOKQMANwMAIARBKGpBIGogBjYCACAEIAQpA2A3AyggCEECdCEMQQAhBgNAIAcgBmooAgAhBSAEQdgFaiAEQShqEMOOgIAAIARBoAZqIAVBBGoQw46AgAACQCAEQdgFaiAEQaAGakEgELqRgIAARQ0AIARB2ANqQRhqIARB2AVqQRhqKQMANwMAIARB2ANqQRBqIARB2AVqQRBqKQMANwMAIARB2ANqQQhqIARB2AVqQQhqKQMANwMAIAQgBCkD2AU3A9gDIA4gBEGgBmpBGGopAwA3AwAgCiAEQaAGakEQaikDADcDACALIARBoAZqQQhqKQMANwMAIAQgBCkDoAY3A2AgBEGABmogAyAEQdgDaiAEQeAAahDghICAACAEKAKABiIFRQ0EIAQoAoQGIglFDQAgBSAJQQV0QQEQt4WAgAALIAwgBkEEaiIGRw0ACyAEQgA3AlQgBEHYA2pBGGoiBiACQRBqEP+CgIAAIARB2ANqQTBqIgUgBEEoakEIaikDADcDACAEQZAEaiIMIARBKGpBEGopAwA3AwAgBEGYBGoiCSAEQShqQRhqKQMANwMAIARBoARqIARBKGpBIGooAgAiCjYCACAEQdgDakEQaiACKQMIIg83AwAgBEIANwPYAyAEIAQpAyg3A4AEIAQgAikDACIQNwPgAyAEQaAGakEYaiIOIARB2ANqQSBqKQMANwMAIARBoAZqQRBqIg0gBikDADcDACAEQaAGakEIaiIGIA83AwAgBCAQNwOgBiAEQaAGakEgaiICEPSNgIAAIARB2AVqQRhqIAkpAwA3AwAgBEHYBWpBEGogDCkDADcDACAEQdgFakEIaiAFKQMANwMAIAQgBCkDgAQ3A9gFIARBgAZqEJKOgIAAIARB+AFqIgsgBEHYBWogCiAEQYAGahDNgICAAEEAIQUgBEHwAWpBADYCACAEQegBakIENwMAIARB2AFqQgA3AwAgBEHgAGpBEGogBikDADcDACAEQeAAakEYaiANKQMANwMAIARB4ABqQSBqIA4pAwA3AwAgBEHgAGpBKGogAikDADcDACAEQeAAakEwaiAEQaAGakEoaikDADcDACAEQgA3A8gBIARCADcDYCAEIAQpA6AGNwNoIARBvAFqQgA3AgAgBEGkAWpCADcCACAEQQA6ANQDIARBADYCrAMgBEEANgKEAyAEQQA2AtwCIARBADYCtAIgBEIANwOwASAEQgA3A5gBIAhBAnQhCSAEQdgFakEEciEMIARB3AJqIQogBEGwAWohDiAEQeAAakEIaiENA0AgDCAHIAVqKAIAIgZBBGoQw46AgAAgBCAGKAIANgLYBSAEQYAGakEYaiAGQfwAaikAADcDACAEQYAGakEQaiAGQfQAaikAADcDACAEQYAGakEIaiAGQewAaikAADcDACAEIAYpAGQ3A4AGIARBoAZqIAZBJGoQqY6AgAAgBEHYA2ogBEHgAGogAyAEQdgFaiAEQYAGaiAEQaAGahCZgoCAAAJAAkACQAJAIAQpA9gDIg9CAlENACAPQgFSDQIgBCAEKAIIQQFqNgIIIARB0ABqIAZB5ABqEMOEgIAARQ0DIAAgBCkDADcCACAAQRBqIARBEGooAgA2AgAgAEEIaiAEQQhqKQMANwIADAELIABBAjoAEAsCQCAEQfwAaigCACIGRQ0AIARB+ABqKAIAIAZBMGxBCBC3hYCAAAsCQCAEQYwBaigCACIGRQ0AIARBiAFqKAIAIAZBA3RBCBC3hYCAAAsgCxDRhICAACAEQYQCahDQhICAACAEQaABahDPhICAACAEQbgBahDPhICAAAJAIAQoAuwBIgZFDQAgBCgC6AEgBkGIAWxBBBC3hYCAAAsgBEHQAGoQzoSAgAAMBgsgBC0A0QVBAXFFDQAgBCAEKAIEQQFqNgIECyAJIAVBBGoiBUYNAgwACwsgACAEKQMANwIAIABBEGogBEEQaigCADYCACAAQQhqIARBCGopAwA3AgAMAgsgBCAEKQNoNwPYBQJAIA4gBEHYBWoQhI6AgABB/wFxQQFLDQAgBEHYA2pBIGogCkEgaiIGKQIANwMAIARB2ANqQRhqIApBGGoiBSkCADcDACAEQdgDakEQaiAKQRBqIgwpAgA3AwAgBEHYA2pBCGogCkEIaiIJKQIANwMAIAQgCikCADcD2AMgBEEANgLcAiAEQaAGaiALIARB2ANqIA0gBEHYBWoQyoCAgAAgBiAEQaAGakEgaikDADcCACAFIARBoAZqQRhqKQMANwIAIAwgBEGgBmpBEGopAwA3AgAgCSAEQaAGakEIaikDADcCACAKIAQpA6AGNwIACwJAIAQoAtwCRQ0AIARB/ANqIgYgBEGAA2ooAgA2AgAgBEH0A2ogBEH4AmopAwA3AgAgBEHsA2ogBEHwAmopAwA3AgAgBEHkA2ogBEHoAmopAwA3AgAgBCAEQeACaikDADcC3AMgBEHYA2pBBHIgAUEQakEgELqRgIAADQAgBigCACABKAIARw0AIARBAToAEAsgACAEKQMANwIAIABBEGogBEEQaigCADYCACAAQQhqIARBCGopAwA3AgACQCAEQfwAaigCACIGRQ0AIARB+ABqKAIAIAZBMGxBCBC3hYCAAAsCQCAEQYwBaigCACIGRQ0AIARBiAFqKAIAIAZBA3RBCBC3hYCAAAsgCxDRhICAACAEQYQCahDQhICAACAEQaABahDPhICAACAEQbgBahDPhICAAAJAIAQoAuwBIgZFDQAgBCgC6AEgBkGIAWxBBBC3hYCAAAsgBEHQAGoQzoSAgAAgBCgCHCIGRQ0CIAcgBkECdEEEELeFgIAADAILIABBEGogBEEQaigCADYCACAAQQhqIARBCGopAwA3AgAgACAEKQMANwIACyAEKAIcIgZFDQAgByAGQQJ0QQQQt4WAgAALIARB4AZqJICAgIAAC+sGAgR/AX4jgICAgABBwAFrIgIkgICAgAAgAkH4AGpBGGoiA0IANwMAIAJB+ABqQRBqIgRCADcDACACQfgAakEIaiIFQgA3AwAgAkIANwN4IAJBqAFqIAEgAkH4AGpBIBDSjoCAAAJAAkACQAJAAkACQAJAAkACQCACKAKoAQ0AIAJBGGpBCGogBSkDADcDACACQRhqQRBqIAQpAwA3AwAgAkEYakEYaiADKQMANwMAIAIgAikDeCIGNwM4IAIgBjcDGCACQQA2AjggAkH4AGogASACQThqQQQQ0o6AgAAgAigCeA0BIAIoAjghAyACQfgAaiABEMSBgIAAIAIoAnhFDQIgAkHYAGpBDGogAkH4AGpBDGopAgA3AgAgAiACKQJ8NwJcIAJBATYCWAwDCyACQcMAaiACQagBakEMaikCADcAACACIAIpAqwBNwA7QRBBBBC2hYCAACIBRQ0DIAAgATYCCCAAQQA2AgQgASACQTtqIgMpAAA3AAAgAEEUakEmNgIAIABBEGpBsOPAgAA2AgAgAEEMakEANgIAIAFBCGogA0EIaikAADcAAAwHCyACQdgAakEIaiIDIAJB+ABqQRBqKAIANgIAIAIgAkH4AGpBCGopAwA3A1ggAigCfCEEQRBBBBC2hYCAACIBRQ0DIAEgBDYCACABIAIpA1g3AgQgACABNgIIIABBADYCBCAAQRRqQSg2AgAgAEEQakHW48CAADYCACAAQQxqQQA2AgAgAUEMaiADKAIANgIADAYLIAJB2ABqIAEgAigCfBDxgoCAACACKAJYRQ0EC0EQQQQQtoWAgAAiAUUNAiABIAIpAlw3AgAgACABNgIIIABBADYCBCAAQRRqQSU2AgAgAEEQakH+48CAADYCACAAQQxqQQA2AgAgAUEIaiACQdgAakEMaikCADcCAAwEC0EQQQQQqJCAgAAAC0EQQQQQqJCAgAAAC0EQQQQQqJCAgAAACyACQQhqQQhqIAJB2ABqQQxqKAIAIgE2AgAgAiACKQJcIgY3AwggAEEoaiACQRhqQRhqKQMANwAAIABBIGogAkEoaikDADcAACAAQRhqIAJBGGpBCGopAwA3AAAgACACKQMYNwAQIAAgAzYCACAAIAY3AgQgAEEMaiABNgIACyACQcABaiSAgICAAAvpCgENfyOAgICAAEHwAWsiAiSAgICAACACQfgAakIANwMAIAJB4ABqQRBqQgA3AwAgAkHgAGpBCGpCADcDACACQgA3A2AgAkEgaiABIAJB4ABqQSAQ0o6AgAACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAiANACACQagBakEIaiACQfQAaikCADcDACACQagBakEQaiACQfwAaigCADYCACACIAIpAmw3A6gBIAIoAmAhAyACKAJkIQQgAigCaCEFIAJBADYC2AEgAkHgAGogASACQdgBakEEENKOgIAAIAIoAmANASACQQhqQQhqIAJBqAFqQQhqKQMANwMAIAJBCGpBEGogAkGoAWpBEGooAgA2AgAgAiACKQOoATcDCCACKALYASEGIAJB4ABqIAEQ04GAgAAgAi0AYA0DIAJBIGpBOGoiByACQZkBaikAADcDACACQSBqQTBqIgggAkGRAWopAAA3AwAgAkEgakEoaiIJIAJBiQFqKQAANwMAIAJBwABqIgogAkGBAWopAAA3AwAgAkE4aiILIAJB+QBqIgwpAAA3AwAgAkEgakEQaiACQfEAaiINKQAANwMAIAJBIGpBCGogAkHpAGoiDikAADcDACACIAIpAGE3AyAgAkHgAGogARDSgYCAACACLQBgDQQgAEHoAGogAikAYTcAACAAQYABaiAMKQAANwAAIABB+ABqIA0pAAA3AAAgAEHwAGogDikAADcAACAAQSRqIAJBCGpBEGooAgA2AgAgAEEcaiACQQhqQQhqKQMANwIAIABBFGogAikDCDcCACAAQShqIAIpAyA3AAAgAEEwaiACQSBqQQhqKQMANwAAIABBOGogAkEgakEQaikDADcAACAAQcAAaiALKQMANwAAIABByABqIAopAwA3AAAgAEHQAGogCSkDADcAACAAQdgAaiAIKQMANwAAIABB4ABqIAcpAwA3AAAgAEEQaiAFNgIAIABBDGogBDYCACAAQQhqIAM2AgAgACAGNgIEIABBADYCAAwFCyACIAIoAC02AtgBIAIgAkEgakEQaigAADYA2wEgAiACKALYATYCwAEgAiACKADbATYAwwEgAigAKSEDIAIoACUhBCACLQAkIQVBEEEEELaFgIAAIgFFDQUgASADNgAFIAEgBDYAASABIAU6AAAgASACKALAATYACSABQQxqIAIoAMMBNgAAQdziwIAAIQRBKSEFDAELIAJBIGpBCGoiAyACQeAAakEQaigCADYCACACIAJB4ABqQQhqKQMANwMgIAIoAmQhBEEQQQQQtoWAgAAiAUUNBSABIAQ2AgAgASACKQMgNwIEIAFBDGogAygCADYCAEGF48CAACEEQSshBQtBEEEEELaFgIAAIgNFDQUgAyAFNgIMIAMgBDYCCCADQQA2AgQgAyABNgIAIAAgAzYCBCAAQQE2AgAgAEEQakEtNgIAIABBDGpBo+TAgAA2AgAgAEEIakEANgIADAILQRBBBBC2hYCAACIBRQ0FIAEgAikCZDcCACAAIAE2AgQgAEEBNgIAIABBEGpBLTYCACAAQQxqQdDkwIAANgIAIABBCGpBADYCACABQQhqIAJB4ABqQQxqKQIANwIADAELQRBBBBC2hYCAACIBRQ0FIAEgAikCZDcCACAAIAE2AgQgAEEBNgIAIABBEGpBJjYCACAAQQxqQf3kwIAANgIAIABBCGpBADYCACABQQhqIAJB4ABqQQxqKQIANwIACyACQfABaiSAgICAAA8LQRBBBBCokICAAAALQRBBBBCokICAAAALQRBBBBCokICAAAALQRBBBBCokICAAAALQRBBBBCokICAAAALtgUDAX8DfgJ/I4CAgIAAQeAAayIDJICAgIAAIANBIGogASACEOGBgIAAAkACQCADKAIoRQ0AIANBGGogA0EgakEQaikDADcDACADQRBqIANBKGopAwAiBDcDACADKQMgIQUgAyADQRRqKQIAIgZCIIg+AjwgAyAEpyICNgI4IANBIGogA0E4ahC7goCAAAJAIAMoAiAiAQ0AIAMgAygCJDYCRCADQfSAgIAANgJcIAMgA0HEAGo2AlggA0EBNgIUIANCATcCBCADQdTlwIAANgIAIAMgA0HYAGo2AhAgA0HIAGogAxCtkICAAAJAIAMoAkQiASgCACIHRQ0AIAFBBGooAgAiCEUNACAHIAhBARC3hYCAAAsgBqchBwJAIAFBEGooAgAiCEUNACABKAIMIAhBBHRBBBC3hYCAAAsgAygCREEYQQQQt4WAgAAgAykDSCEEIAMoAlAhAQJAIAdFDQAgAiAHQQEQt4WA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toWAgAAiAUUNBiABQQU6AAAgASAJKQM4NwABIAFBCWogCUHAAGopAwA3AAAgAUERaiAJQcgAaikDADcAACABQRlqIAlB0ABqKQMANwAAIABBADYCACAAIAE2AgQMAgsgAUF/SiIHRQ0CIAEgBxC2hYCAACIKRQ0GCyAAIAE2AgQgACAKNgIAIAogCyABELyRgIAAGiAAIAE2AgggAkUNACALIAJBARC3hYCAAAsgCUHwAGokgICAgAAPCxCpkICAAAALIAogAhCokICAAAALQSAgCkHQ7MCAABCOkYCAAAALQTRBBBCokICAAAALIAEgBxCokICAAAAL5gICBH8BfiOAgICAAEEwayICJICAgIAAIAEoAgQhAyABKAIAIgQoAgAhBSAEKAIEIQQgAkEgakEIaiABKAIIIgFBCGooAgA2AgAgAiABKQIANwMgIAJBEGogBSADIAJBIGogBCgCDBGAgICAAAACQAJAAkAgAigCECIBDQBBNEEEELaFgIAAIgENAUE0QQQQqJCAgAAACyACIAIpAhQ3AiQgAiABNgIgIAJBCGogAkEgahDtiICAACACKQMIIQYgAEEHNgLwBCAAIAY3AgAgAEEgaiADQRhqKQAANwAAIABBGGogA0EQaikAADcAACAAQRBqIANBCGopAAA3AAAgACADKQAANwAIDAELIAFBBToAACABIAMpAAA3AAEgAUEJaiADQQhqKQAANwAAIAFBEWogA0EQaikAADcAACABQRlqIANBGGopAAA3AAAgAEEINgLwBCAAIAE2AgALIAJBMGokgICAgAALDAAgACABEKODgIAAC+cFAQZ/I4CAgIAAQfADayICJICAgIAAIAEoAgQhAyABKAIAKAIAIgQoAgAhBSAEKAIEIQQgAkEIaiABKAIIIAEoAgwoAgAQ04iAgAAgAkHgAWogAkEIahDXiICAACACQbgDaiAFIAMgAkHgAWogBCgCDBGAgICAAAACQAJAAkACQCACKAK4AyIEDQAgAkHgAWpBCGoiBCADQQhqKQAANwMAIAJB4AFqQRBqIgUgA0EQaikAADcDACACQeABakEYaiIGIANBGGopAAA3AwAgAiADKQAANwPgASABKAIQKAIAIQNBNEEEELaFgIAAIgENAUE0QQQQqJCAgAAACyACKAK8AyEFIAJB4AFqIAQgAigCwAMQ5oKA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IgNFDQAgAkEQaigCACIERQ0AIAMgBEEBELeFgIAACyAAIAE2AgggAEELNgIAIABBDGogAikDUDcCACAAQRhqIAIpA2A3AwAgAEEUaiACQdAAakEIaigCADYCACAAQSBqIAJB4ABqQQhqKQMANwMACyACQfAAaiSAgICAAAv9AQEBfyOAgICAAEHQAGsiAiSAgICAAAJAAkAgASgCAEELRw0AIABBCzYCAAwBCyACQShqQSBqIAFBIGopAwA3AwAgAkEoakEYaiABQRhqKQMANwMAIAJBKGpBEGogAUEQaikDADcDACACQShqQQhqIAFBCGopAwA3AwAgAiABKQMANwMoIAJBBHIgAkEoahCeg4CAACACQQM2AgAgAkEoahCog4CAACAAQSBqIAJBIGopAwA3AwAgAEEYaiACQRhqKQMANwMAIABBEGogAkEQaikDADcDACAAQQhqIAJBCGopAwA3AwAgACACKQMANwMACyACQdAAaiSAgICAAAu9AgEBfyOAgICAAEHwAGsiAiSAgICAAAJAAkAgAS0AAEE5Rw0AIABBCzYCAAwBCyACQRBqQThqIAFBOGopAwA3AwAgAkEQakEwaiABQTBqKQMANwMAIAJBEGpBKGogAUEoaikDADcDACACQRBqQSBqIAFBIGopAwA3AwAgAkEQakEYaiABQRhqKQMANwMAIAJBEGpBEGogAUEQaikDADcDACACQRBqQQhqIAFBCGopAwA3AwAgAiABKQMANwMQIAJBuYCAgAA2AlQgAiACQRBqNgJQIAJBATYCbCACQgE3AlwgAkGg8MCAADYCWCACIAJB0ABqNgJoIAIgAkHYAGoQrZCAgAAgAkEQahCng4CAACAAQQM2AgAgACACKQMANwIEIABBDGogAkEIaigCADYCAAsgAkHwAGokgICAgAALYAEBfyOAgICAAEEgayIAJICAgIAAIABBFGpBATYCACAAQgE3AgQgAEHE58CAADYCACAAQY2AgIAANgIcIABB6O/AgAA2AhggACAAQRhqNgIQIABB8O/AgAAQtpCAgAAAC/ICAQJ/I4CAgIAAQRBrIgIkgICAgAACQAJAAkACQCABQYABSQ0AIAJBADYCDCABQYAQTw0BIAIgAUE/cUGAAXI6AA0gAiABQQZ2QcABcjoADEECIQEMAgsCQCAAKAIIIgMgACgCBEcNACAAIAMQqYCAgAAgACgCCCEDCyAAKAIAIANqIAE6AAAgACAAKAIIQQFqNgIIDAILAkAgAUGAgARJDQAgAiABQT9xQYABcjoADyACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA0gAiABQRJ2QQdxQfABcjoADEEEIQEMAQsgAiABQT9xQYABcjoADiACIAFBDHZB4AFyOgAMIAIgAUEGdkE/cUGAAXI6AA1BAyEBCwJAIAAoAgQgACgCCCIDayABTw0AIAAgAyABELqAgIAAIAAoAgghAwsgACgCACADaiACQQxqIAEQvJGAgAAaIAAgAyABajYCCAsgAkEQaiSAgICAAEEAC0sBAX8CQCAAKAIEIAAoAggiA2sgAk8NACAAIAMgAhC6gICAACAAKAIIIQMLIAAoAgAgA2ogASACELyRgIAAGiAAIAMgAmo2AghBAAuOBQEHfyOAgICAAEHwAGsiAySAgICAAAJAIAEoAgAiBEEEaigCACACSQ0AQQEhBQJAAkACQAJAAkAgAkUNACACQX9KIgFFDQEgAiABELaFgIAAIgVFDQILQQAhBiADQQA2AgwgAyAFNgIIIAMgAjYCECADQSAgAkEKdmdrIgFBByABQQdJG0ECdEEBciIHNgIUAkAgBEEEaiIIKAIAIgkgAiAJIAJJGyIBRQ0AIAQoAgAhBQNAIANBCGogBSABEPGOgIAAIAkgAUkNBCAIIAkgAWsiCTYCACAEIAUgAWoiBTYCACAJIAIgAWsiAiAJIAJJGyIBDQALIAMoAhQhByADKAIQIQIgAygCDCEGIAMoAgghBQsCQAJAIAdBAXENACAAQdj/w4AANgIMIAAgBzYCCCAAIAY2AgQgACAFNgIADAELIANBGGogBSAGIAIgB0EFdiIBEPKOgIAAIANBwABqQQhqIANBGGpBCGooAgA2AgAgAyADKQMYNwNAIANBKGogA0HAAGoQ4Y6AgAAgAyABNgI8IAMoAiwiCSABSQ0EIAMgCSABazYCLCADIAMoAiggAWo2AiggAEEIaiADQShqQQhqKQMANwIAIAAgAykDKDcCAAsgA0HwAGokgICAgAAPCxCpkICAAAALIAIgARCokICAAAALIAEgCUHM6sCAABC4kICAAAALIANB5ABqQfyAgIAANgIAIANB1ABqQQI2AgAgA0ICNwJEIANBhOvAgAA2AkAgA0H8gICAADYCXCADIAk2AmwgAyADQdgAajYCUCADIANB7ABqNgJgIAMgA0E8ajYCWCADQcAAakHo68CAABC2kICAAAALQYzpwIAAQRxBhOrAgAAQu5CAgAAAC9cHAQd/I4CAgIAAQeABayICJICAgIAAAkACQAJAAkACQAJAAkAgACgCBA0AIAAoAgwhA0GgBkEEELaFgIAAIgRFDQIgBEEANgIAIAQgACkCEDcCwAMgBCABKQIANwIEIARByANqIABBGGopAgA3AgAgBEHQA2ogAEEgaikCADcCACAEQdgDaiAAQShqKQIANwIAIARBDGogAUEIaikCADcCACAEQRRqIAFBEGopAgA3AgAgBEEcaiABQRhqKQIANwIAIARBJGogAUEgaikCADcCACAEQQE7Ab4DIANBATYCCCADIAQ2AgQgA0EANgIAIARBBGohBAwBCyACQeAAakEIaiAAQQhqKAIANgIAIAIgACkCADcDYCACQfAAakEYaiAAQShqKQAANwMAIAJB8ABqQRBqIABBIGopAAA3AwAgAkHwAGpBCGogAEEYaikAADcDACACIAApABA3A3AgAkGQAWpBIGogAUEgaikCADcDACACQZABakEYaiABQRhqKQIANwMAIAJBkAFqQRBqIAFBEGopAgA3AwAgAkGQAWpBCGogAUEIaikCADcDACACIAEpAgA3A5ABIAIgAkHgAGogAkHwAGogAkGQAWoQkoCAgAAgAigCWCEEAkAgAigCBA0AIAAoAgwiACAAKAIIQQFqNgIIDAELIAJBkAFqIAJB0AAQvJGAgAAaIAAoAgwiASgCBCIDRQ0CIAEoAgAhBSACKAJQIQYgAigCVCEHQdAGQQQQtoWAgAAiAEUNAyAAIAM2AqAGIABBADsBvgMgAEEANgIAIAEgADYCBCADQQA7AbwDIAMgADYCACABIAVBAWo2AgAgBSAGRw0EIAAvAb4DIgNBCksNBSAAIANBAWoiCDsBvgMgACADQQV0aiIFQcADaiACQZgBaiIGKQIANwIAIAVByANqIAZBCGopAgA3AgAgBUHQA2ogBkEQaikCADcCACAFQdgDaiAGQRhqKQIANwIAIAAgA0EobGoiA0EEaiACQbgBaiIFKQIANwIAIANBDGogBUEIaikCADcCACADQRRqIAVBEGopAgA3AgAgA0EcaiAFQRhqKQIANwIAIANBJGogBUEgaikCADcCACAAQaAGaiAIQQJ0aiAHNgIAIAcgCDsBvAMgByAANgIAIAEgASgCCEEBajYCCAsgAkHgAWokgICAgAAgBA8LQaAGQQQQqJCAgAAAC0Hg58CAAEErQezowIAAELuQgIAAAAtB0AZBBBCokICAAAALQYyBwIAAQTBBvIHAgAAQu5CAgAAAC0GAgMCAAEEgQcyBwIAAELuQgIAAAAvsAwEIfyOAgICAAEEwayIBJICAgIAAAkACQAJAAkACQAJAAkAgAEEIaigCAA0AIAAoAhAhAkE0QQQQtoWAgAAiA0UNAiADQQE7ATIgA0EANgIAIAMgACgCADYCBCACQQE2AgggAiADNgIEIAJBADYCAAwBCyABQSBqQQhqIABBDGooAgA2AgAgASAAKQIENwMgIAFBCGogAUEgaiAAKAIAEJGAgIAAIAAoAhAhAiABKAIcIQMCQCABKAIMRQ0AIAIoAgQiBEUNAyACKAIAIQUgASgCECEGIAEoAhQhByABKAIYIQhB5ABBBBC2hYCAACIARQ0EIAAgBDYCNCAAQQA7ATIgAEEANgIAIAIgADYCBCAEQQA7ATAgBCAANgIAIAIgBUEBajYCACAFIAdHDQUgAC8BMiIEQQpLDQYgACAEQQFqIgU7ATIgAEE0aiAFQQJ0aiAINgIAIAAgBEECdGpBBGogBjYCACAIIAU7ATAgCCAANgIACyACIAIoAghBAWo2AggLIAFBMGokgICAgAAgAw8LQTRBBBCokICAAAALQeDnwIAAQStB7OjAgAAQu5CAgAAAC0HkAEEEEKiQgIAAAAtBjIHAgABBMEG8gcCAABC7kICAAAALQYCAwIAAQSBBzIHAgAAQu5CAgAAAC9YFAQd/I4CAgIAAQYABayIDJICAgIAAAkACQAJAAkACQAJAAkAgACgCBA0AIAAoAgwhBEGYBEEIELaFgIAAIgVFDQIgBUEANgKwASAFQQE7AbYBIAUgAjYCCCAFIAE3AwAgBSAAKQIQNwK4ASAFQcABaiAAQRhqKQIANwIAIAVByAFqIABBIGopAgA3AgAgBUHQAWogAEEoaikCADcCACAEQQE2AgggBCAFNgIEIARBADYCAAwBCyADQdAAakEIaiAAQQhqKAIANgIAIAMgACkCADcDUCADQeAAakEYaiAAQShqKQAANwMAIANB8ABqIABBIGopAAA3AwAgA0HgAGpBCGogAEEYaikAADcDACADIAApABA3A2AgA0EIaiADQdAAaiADQeAAaiABIAIQj4CAgAAgACgCDCECIAMoAkghBQJAIAMpAygiAVANACACKAIEIgRFDQMgAigCACEGIAMoAjAhByADKAJAIQggAygCRCEJQcgEQQgQtoWAgAAiAEUNBCAAIAQ2ApgEIABBADsBtgEgAEEANgKwASACIAA2AgQgBEEAOwG0ASAEIAA2ArABIAIgBkEBajYCACAGIAhHDQUgAC8BtgEiBEEKSw0GIAAgBEEBaiIGOwG2ASAAIARBBHRqIgggBzYCCCAIIAE3AwAgACAEQQV0aiIEQbgBaiADKQMINwMAIARBwAFqIANBEGopAwA3AwAgBEHIAWogA0EYaikDADcDACAEQdABaiADQSBqKQMANwMAIABBmARqIAZBAnRqIAk2AgAgCSAGOwG0ASAJIAA2ArABCyACIAIoAghBAWo2AggLIANBgAFqJICAgIAAIAUPC0GYBEEIEKiQgIAAAAtB4OfAgABBK0Hs6MCAABC7kICAAAALQcgEQQgQqJCAgAAAC0GMgcCAAEEwQbyBwIAAELuQgIAAAAtBgIDAgABBIEHMgcCAABC7kICAAAALnAYBB38jgICAgABBsARrIgIkgICAgAACQAJAAkACQAJAAkACQCAAKAIEDQAgACgCDCEDQawUQQQQtoWAgAAiBEUNAiAEQQA2AgAgBCAAKQIQNwLMESAEQdQRaiAAQRhqKQIANwIAIARB3BFqIABBIGopAgA3AgAgBEHkEWogAEEoaikCADcCACAEQQRqIgUgAUHMARC8kYCAABogBEEBOwHKESADQQE2AgggAyAENgIEIANBADYCAAwBCyACQYgCakEIaiAAQQhqKAIANgIAIAIgACkCADcDiAIgAkGYAmpBGGogAEEoaikAADcDACACQagCaiAAQSBqKQAANwMAIAJBmAJqQQhqIABBGGopAAA3AwAgAiAAKQAQNwOYAiACQbgCaiABQcwBELyRgIAAGiACQQhqIAJBiAJqIAJBmAJqIAJBuAJqEJCAgIAAIAIoAoQCIQUCQCACLQAwQQJHDQAgACgCDCIAIAAoAghBAWo2AggMAQsgAkG4AmogAkEIakH0ARC8kYCAABogACgCDCIEKAIEIgFFDQIgBCgCACEGIAIoAvwBIQcgAigCgAIhA0HcFEEEELaFgIAAIgBFDQMgACABNgKsFCAAQQA7AcoRIABBADYCACAEIAA2AgQgAUEAOwHIESABIAA2AgAgBCAGQQFqNgIAIAYgB0cNBCAALwHKESIBQQpLDQUgACABQQFqIgg7AcoRIAAgAUEFdGoiBkHMEWogAkHAAmoiBykCADcCACAGQdQRaiAHQQhqKQIANwIAIAZB3BFqIAdBEGopAgA3AgAgBkHkEWogB0EYaikCADcCACAAIAFBzAFsakEEaiACQeACakHMARC8kYCAABogAEGsFGogCEECdGogAzYCACADIAg7AcgRIAMgADYCACAEIAQoAghBAWo2AggLIAJBsARqJICAgIAAIAUPC0GsFEEEEKiQgIAAAAtB4OfAgABBK0Hs6MCAABC7kICAAAALQdwUQQQQqJCAgAAAC0GMgcCAAEEwQbyBwIAAELuQgIAAAAtBgIDAgABBIEHMgcCAABC7kICAAAAL9wUBB38jgICAgABB8ABrIgIkgICAgAACQAJAAkACQAJAAkACQCAAQRBqKAIADQAgACgCGCEDQZACQQQQtoWAgAAiBEUNAiAEQQA2AgAgBEEBOwGOAiAEIAApAgA3AgQgBCABKQIANwKIASAEQQxqIABBCGooAgA2AgAgBEGQAWogAUEIaigCADYCACADQQE2AgggAyAENgIEIANBADYCACAEQYgBaiEBDAELIAJBMGpBCGogAEEUaigCADYCACACIAApAgw3AzAgAkHAAGpBCGogAEEIaigCADYCACACIAApAgA3A0AgAkHQAGpBCGoiBCABQQhqKAIANgIAIAIgASkCADcDUCACIAJBMGogAkHAAGogAkHQAGoQk4CAgAAgAigCKCEBAkAgAigCBA0AIAAoAhgiACAAKAIIQQFqNgIIDAELIAJB0ABqQRhqIAJBGGopAwA3AwAgAkHQAGpBEGogAkEQaikDADcDACAEIAJBCGopAwA3AwAgAiACKQMANwNQIAAoAhgiBCgCBCIDRQ0CIAQoAgAhBSACKAIgIQYgAigCJCEHQcACQQQQtoWAgAAiAEUNAyAAIAM2ApACIABBADsBjgIgAEEANgIAIAQgADYCBCADQQA7AYwCIAMgADYCACAEIAVBAWo2AgAgBSAGRw0EIAAvAY4CIgNBCksNBSAAIANBAWoiBTsBjgIgACADQQxsaiIDQYgBaiACQeQAaiIGKQIANwIAIANBDGogAkHYAGoiCEEIaigCADYCACADQQRqIAgpAgA3AgAgA0GQAWogBkEIaigCADYCACAAQZACaiAFQQJ0aiAHNgIAIAcgBTsBjAIgByAANgIAIAQgBCgCCEEBajYCCAsgAkHwAGokgICAgAAgAQ8LQZACQQQQqJCAgAAAC0Hg58CAAEErQezowIAAELuQgIAAAAtBwAJBBBCokICAAAALQYyBwIAAQTBBvIHAgAAQu5CAgAAAC0GAgMCAAEEgQcyBwIAAELuQgIAAAAuYBQEHfyOAgICAAEHwAGsiASSAgICAAAJAAkACQAJAAkACQAJAIAAoAgQNACAAKAIMIQJB6AJBBBC2hYCAACIDRQ0CIANBADYCACADQQE7AQYgAyAAKQIQNwIIIANBEGogAEEYaikCADcCACADQRhqIABBIGopAgA3AgAgA0EgaiAAQShqKQIANwIAIAJBATYCCCACIAM2AgQgAkEANgIADAELIAFBwABqQQhqIABBCGooAgA2AgAgASAAKQIANwNAIAFB0ABqQRhqIABBKGopAAA3AwAgAUHgAGogAEEgaikAADcDACABQdAAakEIaiAAQRhqKQAANwMAIAEgACkAEDcDUCABQQhqIAFBwABqIAFB0ABqEJSAgIAAIAAoAgwhAiABKAI4IQMCQCABKAIMRQ0AIAIoAgQiBEUNAyACKAIAIQUgASgCECEGIAEoAhQhB0GYA0EEELaFgIAAIgBFDQQgACAENgLoAiAAQQA7AQYgAEEANgIAIAIgADYCBCAEQQA7AQQgBCAANgIAIAIgBUEBajYCACAFIAZHDQUgAC8BBiIGQQpLDQYgACAGQQV0aiIEQQhqIAFBGGoiBSkCADcCACAEQRBqIAVBCGopAgA3AgAgBEEYaiAFQRBqKQIANwIAIARBIGogBUEYaikCADcCACAAIAZBAWoiBDsBBiAAQegCaiAEQQJ0aiAHNgIAIAcgBDsBBCAHIAA2AgALIAIgAigCCEEBajYCCAsgAUHwAGokgICAgAAgAw8LQegCQQQQqJCAgAAAC0Hg58CAAEErQezowIAAELuQgIAAAAtBmANBBBCokICAAAALQYyBwIAAQTBBvIHAgAAQu5CAgAAAC0GAgMCAAEEgQcyBwIAAELuQgIAAAAvnAgEHfyOAgICAAEHgAGsiAiSAgICAACABKAIMIQMgAkEAOgAPIAJBEGpBCGoiBCABQQhqKAIANgIAIAIgASkCADcDECACQTBqIAJBEGogAkEPahCjgICAACACQRBqQRhqIgEgAkEwakEYaikDADcDACACQRBqQRBqIgUgAkEwakEQaikDADcDACAEIAJBMGpBCGopAwA3AwAgAiACKQMwNwMQIAMgAygCCEF/ajYCCAJAAkACQCACLQAPRQ0AIAMoAgQiBkUNASADKAIAIgdFDQIgAyAGKALoAiIINgIEIAMgB0F/ajYCACAIQQA2AgAgBkGYA0EEELeFgIAACyAAIAIpAxA3AAAgAEEYaiABKQMANwAAIABBEGogBSkDADcAACAAQQhqIAQpAwA3AAAgAkHgAGokgICAgAAPC0Hg58CAAEErQfzowIAAELuQgIAAAAtBvILAgABBIUHggsCAABC7kICAAAALwgIBBn8jgICAgABB0ABrIgIkgICAgAAgASgCDCEDIAJBADoADyACQRBqQQhqIgQgAUEIaigCADYCACACIAEpAgA3AxAgAkEoaiACQRBqIAJBD2oQooCAgAAgAkEQakEQaiIBIAJBKGpBEGopAwA3AwAgBCACQShqQQhqKQMANwMAIAIgAikDKDcDECADIAMoAghBf2o2AggCQAJAAkAgAi0AD0UNACADKAIEIgVFDQEgAygCACIGRQ0CIAMgBSgCkAIiBzYCBCADIAZBf2o2AgAgB0EANgIAIAVBwAJBBBC3hYCAAAsgACACKQMQNwIAIABBEGogASkDADcCACAAQQhqIAQpAwA3AgAgAkHQAGokgICAgAAPC0Hg58CAAEErQfzowIAAELuQgIAAAAtBvILAgABBIUHggsCAABC7kICAAAAL7gICA38BfiOAgICAAEEgayIDJICAgIAAIAIoAgAhBCADQRBqIAFBASACQQhqKAIAIgUQ/IaAgAACQAJAIAMoAhANACADQRBqQQhqLQAAIQEgAygCFCECAkACQCAFRQ0AIAVB4ABsIQUgAUH/AXFFIQEDQAJAIAFBAXFFDQACQCACKAIIIgEgAigCBEcNACACIAEQqYCAgAAgAigCCCEBCyACKAIAIAFqQSw6AAAgAiACKAIIQQFqNgIICyADQRBqIAQgAhD+gICAACADKAIQDQIgBEHgAGohBEEBIQEgBUGgf2oiBQ0AC0EAIQELIAAgAiABQf8BcUEARxCRh4CAAAwCCyADQQhqIANBEGpBDGooAgAiAjYCACADIAMpAhQiBjcDACAAQQxqIAI2AgAgACAGNwIEIABBATYCAAwBCyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAsgA0EgaiSAgICAAAvrAgIDfwF+I4CAgIAAQSBrIgMkgICAgAAgAigCACEEIANBEGogAUEBIAJBCGooAgAiBRD8hoCAAAJAAkAgAygCEA0AIANBEGpBCGotAAAhASADKAIUIQICQAJAIAVFDQAgBUEYbCEFIAFB/wFxRSEBA0ACQCABQQFxRQ0AAkAgAigCCCIBIAIoAgRHDQAgAiABEKmAgIAAIAIoAgghAQsgAigCACABakEsOgAAIAIgAigCCEEBajYCCAsgA0EQaiAEIAIQ2ISAgAAgAygCEA0CIARBGGohBEEBIQEgBUFoaiIFDQALQQAhAQsgACACIAFB/wFxQQBHEJGHgIAADAILIANBCGogA0EQakEMaigCACICNgIAIAMgAykCFCIGNwMAIABBDGogAjYCACAAIAY3AgQgAEEBNgIADAELIAAgAykCFDcCBCAAQQE2AgAgAEEMaiADQRBqQQxqKAIANgIACyADQSBqJICAgIAAC+cCAgN/AX4jgICAgABBIGsiAySAgICAACACKAIAIQQgA0EQaiABQQEgAkEIaigCACIFEPyGgIAAAkACQCADKAIQDQAgA0EQakEIai0AACEBIAMoAhQhAgJAAkAgBUUNACABQf8BcUUhAQNAAkAgAUEBcUUNAAJAIAIoAggiASACKAIERw0AIAIgARCpgICAACACKAIIIQELIAIoAgAgAWpBLDoAACACIAIoAghBAWo2AggLIANBEGogAiAELQAAEPeGgIAAIAMoAhANAkEBIQEgBEEBaiEEIAVBf2oiBQ0AC0EAIQELIAAgAiABQf8BcUEARxCRh4CAAAwCCyADQQhqIANBEGpBDGooAgAiAjYCACADIAMpAhQiBjcDACAAQQxqIAI2AgAgACAGNwIEIABBATYCAAwBCyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAsg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ASgCACIIDQELQfTswIAAQewAQeDtwIAAEMuQgIAAAAsgAUEEaigCACEBIAggCCgCACIHQQFqNgIAIAdBf0wNACALIAE2AjwgCyAINgI4AkAgCUUNACALQeEAaiALQTBqKQMANwAAIAtB2QBqIAtBKGopAwA3AAAgC0HRAGogC0EgaikDADcAACALIAspAxg3AEkgCyALQThqEOyIgIAAIAtB/ABqIAQ2AgAgC0HwAGogCykDADcDACALIAM2AnggC0EANgJsIAtBAjoASCAJIAtByABqIAooAgwRhICAgAAAIAsoAjwhASALKAI4IQgLIAAgCykDGDcACCAAIAE2AgQgACAINgIAIABBIGogC0EYakEYaikDADcAACAAQRhqIAtBGGpBEGopAwA3AAAgAEEQaiALQSBqKQMANwAADAELAAALIAtBgAFqJICAgIAAC+YCAgR/AX4jgICAgABBMGsiAiSAgICAACABKAIEIQMgASgCACIEKAIAIQUgBCgCBCEEIAJBIGpBCGogASgCCCIBQQhqKAIANgIAIAIgASkCADcDICACQRBqIAUgAyACQSBqIAQoAgwRgICAgAAAAkACQAJAIAIoAhAiAQ0AQTRBBBC2hYCAACIBDQFBNEEEEKiQgIAAAAsgAiACKQIUNwIkIAIgATYCICACQQhqIAJBIGoQ7YiAgAAgAikDCCEGIABBBzYC8AQgACAGNwIAIABBIGogA0EYaikAADcAACAAQRhqIANBEGopAAA3AAAgAEEQaiADQQhqKQAANwAAIAAgAykAADcACAwBCyABQQU6AAAgASADKQAANwABIAFBCWogA0EIaikAADcAACABQRFqIANBEGopAAA3AAAgAUEZaiADQRhqKQAANwAAIABBCDYC8AQgACABNgIACyACQTBqJICAgIAAC+IhAg5/BX4jgICAgABBgANrIgYkgICAgAAgBkHgAGpBCGogAUEIaiIHKAIANgIAIAYgASkCADcDYCACKAIAIQggAigCBCEJIAYgAzYCbCAGQfAAakEIaiIKIAcoAgA2AgAgBiABKQIANwNwIAZBgAFqQRhqIgsgA0EwaikAADcDACAGQYABakEQaiIMIANBKGopAAA3AwAgBkGAAWpBCGoiDSADQSBqKQAANwMAIAYgAykAGDcDgAEgBkEANgKgASAGQbACakEBciEO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LwAAIQcgASgAAyEJIA8gASkABzcAACAPQRhqIAY6AAAgD0EQaiAcNwAAIA9BCGogGjcAACAFIAk2AHsgBSAEOgB6IAUgBzsBeCAXRQ0BIBYgF0EBELeFgIAADAELCyABIAY2AgwgASAZNgIEIAFBCDoAACABIAUpA9ACNwIQIAEgCTYCCCABQRhqIAgpAwA3AgAgAUEgaiAHKQMANwIAIAFBKGogBCkDADcCACAAQQE2AgAgACABNgIEDAMLIAFBDGooAgAhByAFQdACakEwaiABQTBqKQIANwMAIAVB0AJqQShqIAFBKGopAgA3AwAgBUHQAmpBIGogAUEgaikCADcDACAFQdACakEYaiABQRhqKQIANwMAIAVB0AJqQRBqIgggAUEQaikCADcDACAFQdACakEIaiABQQhqKQIANwMAIAUgASkCADcD0AIgBUG4BGpBCGogBEEIaigCADYCACAFIAQpAgA3A7gEIAUgAzYCrAQgBSACNgKoBAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAgoAgAiCEUNACAIIAIgAyAFQeQCaigCACgCEBGFgICAAABB/wFxQQFLDQELIAYgAiADIAcoAgwRhYCAgAAAIgQNAQsgBUGYAWogBUG4BGogBUGoBGogBUHQAmogBiAHEMODgIAAIAUoApwBIQEgBSgCmAENAyAFQaABaigCACEEDAELQQAhAQJAIAQtAAAOAwgCAAgLIAVBGGogBEEkahDviICAAAJAIAUoAhgiAUUNACAFKAIcIQQMBwsgBUGYAWogBUG4BGogBUGoBGogBUHQAmogBiAHEMODgIAAIAUoApwBIQEgBSgCmAENAyAFQaABaigCACEECyABDQVBACEBDAYLIAVBtAFqIARBGWopAAA3AgAgBUGYAWpBFGogBEERaikAADcCACAFQaQBaiAEQQlqKQAANwIAIAVBADYCmAEgBSAEKQABNwKcASAFQfgAaiAFQbgEahDYiICAACAFQcgEaiAFQZgBaiAFQfgAaiACIAMgBiAHIAUoAtACIAUoAtQCIAggBUHQAmpBFGooAgAQwYOAgAACQCAFKALIBCIBRQ0AIAVBIGpBEGogBUHIBGpBEGoiCCkDADcDACAFQSBqQRhqIAVByARqQRhqIgkpAwA3AwAgBUEgakEgaiAFQcgEakEgaiIZKQMANwMAIAUgBSkD0AQ3AyggBSAFKALMBCIQNgIkIAUgATYCICABIAEoAgAiBEEBajYCACAEQX9MDQMgBSAQNgLMBCAFIAE2AsgEIAVByARqQQhqIAVBIGpBCGoQw46AgAAgBUGhAWogCCkDADcAACAFQakBaiAJKQMANwAAIAVBsQFqIBkpAwA3AAAgBSAFKQPQBDcAmQEgBUEQaiAFKALIBCAFKALMBBDwiICAACAFQQI6AJgBIAUgBSkDEDcCvAEgBiACIAMgBUGYAWogBygCEBGAgICAAAAgBSgCICEBIAUoAiQhBAwFCyAFKALMBCEBIABBATYCACAAIAE2AgQMCwsgAEEBNgIADAILIABBATYCAAwBCwAACyAAIAE2AgQMBwsgBSAENgKcASAFIAE2ApgBIAVBCGogBUGYAWoQ7IiAgAAgBSgCCCEGQQEhAQJAIAUoAgwiBEUNACAEQX9KIgdFDQIgBCAHELaFgIAAIgFFDQMLIAEgBiAEELyRgIAAGiAFKAKYASIGIAYoAgAiBkF/ajYCACAErSEaAkAgBkEBRw0AIAVBmAFqEIKCgIAACyAaQoGAgIAQfiEaCyAAIAE2AgQgAEEANgIAIABBCGogGjcCAAwFCxCpkICAAAALIAQgBxCokICAAAALIAEgBSkD0AI3AAEgAUEFQQQgFRs6AAAgAUEJaiAHKQMANwAAIAFBEWogBikDADcAACABQRlqIAQpAwA3AAAgAEEBNgIAIAAgATYCBAwCCyAFQfQEaiAFQfgAakEYaikDADcCACAFQewEaiAFQfgAakEQaikDADcCACAFQeQEaiAFQfgAakEIaikDADcCACAFQcgEakEIaiIEIAVB0AJqQQhqKQMANwMAIAVByARqQRBqIgYgBUHQAmpBEGooAgA2AgAgBSAFKQN4NwLcBCAFIAUpA9ACNwPIBEE0QQQQtoWAgAAiAUUNAiABIAUpA8gENwIAIAFBMGogBUHIBGpBMGooAgA2AgAgAUEoaiAFQcgEakEoaikDADcCACABQSBqIAVByARqQSBqKQMANwIAIAFBGGogBUHIBGpBGGopAwA3AgAgAUEQaiAGKQMANwIAIAFBCGogBCkDADcCACAAQQE2AgAgACABNgIECyAXRQ0AIBYgF0EBELeFgIAACyAFQYAFaiSAgICAAA8LQTRBBBCokICAAAAL6wICA38BfiOAgICAAEEgayIDJICAgIAAIAIoAgAhBCADQRBqIAFBASACQQhqKAIAIgUQ/IaAgAACQAJAIAMoAhANACADQRBqQQhqLQAAIQEgAygCFCECAkACQCAFRQ0AIAVBGGwhBSABQf8BcUUhAQNAAkAgAUEBcUUNAAJAIAIoAggiASACKAIERw0AIAIgARCpgICAACACKAIIIQELIAIoAgAgAWpBLDoAACACIAIoAghBAWo2AggLIANBEGogBCACEKmFgIAAIAMoAhANAiAEQRhqIQRBASEBIAVBaGoiBQ0AC0EAIQELIAAgAiABQf8BcUEARxCRh4CAAAwCCyADQQhqIANBEGpBDGooAgAiAjYCACADIAMpAhQiBjcDACAAQQxqIAI2AgAgACAGNwIEIABBATYCAAwBCyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAsgA0EgaiSAgICAAAtZAQF/I4CAgIAAQRBrIgMkgICAgAAgAyACENaGgIAAIAAgASADKAIAIgIgAygCCBD5hoCAAAJAIAMoAgQiAUUNACACIAFBARC3hYCAAAsgA0EQaiSAgICAAAuPAwICfwF+I4CAgIAAQSBrIggkgICAgAACQCABKAIIIgkgASgCBEcNACABIAkQqYCAgAAgASgCCCEJCyABKAIAIAlqQfsAOgAAIAEgASgCCEEBajYCCCAIQRBqIAEgBSAGEPmGgIAAAkACQAJAIAgoAhANAAJAIAEoAggiCSABKAIERw0AIAEgCRCpgICAACABKAIIIQkLIAEoAgAgCWpBOjoAACABIAEoAghBAWo2AgggCEEQaiAHIAEQ1oSAgAAgCCgCEA0BAkAgASgCCCIJIAEoAgRHDQAgASAJEKmAgIAAIAEoAgghCQsgASgCACAJakH9ADoAACAAQQA2AgAgASABKAIIQQFqNgIIDAILIAhBCGogCEEQakEMaigCACIBNgIAIAggCCkCFCIKNwMAIABBDGogATYCACAAIAo3AgQgAEEBNgIADAELIAhBCGogCEEQakEMaigCACIBNgIAIAggCCkCFCIKNwMAIABBDGogATYCACAAIAo3AgQgAEEBNgIACyAIQSBqJICAgIAAC48DAgJ/AX4jgICAgABBIGsiCCSAgICAAAJAIAEoAggiCSABKAIERw0AIAEgCRCpgICAACABKAIIIQkLIAEoAgAgCWpB+wA6AAAgASABKAIIQQFqNgIIIAhBEGogASAFIAYQ+YaAgAACQAJAAkAgCCgCEA0AAkAgASgCCCIJIAEoAgRHDQAgASAJEKmAgIAAIAEoAgghCQsgASgCACAJakE6OgAAIAEgASgCCEEBajYCCCAIQRBqIAcgARDVhICAACAIKAIQDQECQCABKAIIIgkgASgCBEcNACABIAkQqYCAgAAgASgCCCEJCyABKAIAIAlqQf0AOgAAIABBADYCACABIAEoAghBAWo2AggMAgsgCEEIaiAIQRBqQQxqKAIAIgE2AgAgCCAIKQIUIgo3AwAgAEEMaiABNgIAIAAgCjcCBCAAQQE2AgAMAQsgCEEIaiAIQRBqQQxqKAIAIgE2AgAgCCAIKQIUIgo3AwAgAEEMaiABNgIAIAAgCjcCBCAAQQE2AgALIAhBIGokgICAgAAL4AMCAn8BfiOAgICAAEEwayIIJICAgIAAAkAgASgCCCIJIAEoAgRHDQAgASAJEKmAgIAAIAEoAgghCQsgASgCACAJakH7ADoAACABIAEoAghBAWo2AgggCEEgaiABIAUgBhD5hoCAAAJAAkACQAJAAkAgCCgCIA0AAkAgASgCCCIJIAEoAgRHDQAgASAJEKmAgIAAIAEoAgghCQsgASgCACAJakE6OgAAIAEgASgCCEEBajYCCCAIQSBqIAFB5MHAgABBBUEAEP2GgIAAIAgoAiBFDQEgCEEQakEMaiAIQSBqQQxqKAIANgIAIAggCCkCJDcCFAwCCyAIQRhqIAhBIGpBDGooAgAiATYCACAIIAgpAiQiCjcDECAAQQxqIAE2AgAgACAKNwIEIABBATYCAAwDCyAIQRBqIAgoAiQgCEEoai0AABCTh4CAACAIKAIQRQ0BCyAIQQhqIAhBEGpBDGooAgAiATYCACAIIAgpAhQiCjcDACAAQQxqIAE2AgAgACAKNwIEIABBATYCAAwBCwJAIAEoAggiCSABKAIERw0AIAEgCRCpgICAACABKAIIIQkLIAEoAgAgCWpB/QA6AAAgAEEANgIAIAEgASgCCEEBajYCCAsgCEEwaiSAgICAAAvJAQECf0EAIQICQCAALQA4IAEtADhHDQAgACgCICABKAIgRw0AIABBOWogAUE5akEgELqRgIAADQAgACgCACIDIAEoAgBHDQACQCADQQFHDQAgAEEIaikDACABQQhqKQMAUg0BIABBEGopAwAgAUEQaikDAFINAQsgACgCJCABKAIkRw0AIAAoAiggASgCKEcNACAAKQMYIAEpAxhSDQAgAEEsaigCACAAQTRqKAIAIAFBLGooAgAgAUE0aigCABDegYCAACECCyACC9MBAQN/AkACQAJAIAAoAgAiAQ0AEM2IgIAAIQJBBEEEELaFgIAAIgFFDQEgASACNgIAQQhBBBC2hYCAACICRQ0CIAJBzOfAgAA2AgQgAiABNgIAIAAgACgCACIBIAIgARs2AgACQCABDQAgAg8LIAIoAgAgAigCBCgCABGGgICAAAACQCACKAIEIgBBBGooAgAiA0UNACACKAIAIAMgAEEIaigCABC3hYCAAAsgAkEIQQQQt4WAgAALIAEPC0EEQQQQqJCAgAAAC0EIQQQQqJCAgAAAC6YFAQp/I4CAgIAAQZAEayIEJICAgIAAIARBiAFqIAAQqY6AgAAgBEHIAmpBOGoiACAEQYgBakE4aikDADcDACAEQcgCakEwaiIFIARBiAFqQTBqKQMANwMAIARByAJqQShqIgYgBEGIAWpBKGopAwA3AwAgBEHIAmpBIGoiByAEQYgBakEgaikDADcDACAEQcgCakEYaiIIIARBiAFqQRhqIgkpAwA3AwAgBEHIAmpBEGoiCiAEQYgBakEQaiILKQMANwMAIARByAJqQQhqIgwgBEGIAWpBCGoiDSkDADcDACAEIAQpA4gBNwPIAiAEQQhqIARByAJqEKqOgIAAIAAgBEEIakE4aikAADcDACAFIARBCGpBMGopAAA3AwAgBiAEQQhqQShqKQAANwMAIAcgBEEIakEgaikAADcDACAIIARBCGpBGGopAAA3AwAgCiAEQQhqQRBqKQAANwMAIAwgBEEIakEIaikAADcDACAEIAQpAAg3A8gCIARByABqIARByAJqEMeFgIAAIAQgAxCnjoCAACAEQcgCaiAEKAIAIAQoAgQQw4WAgAACQAJAIAQtAMgCDQAgCSAEQeECaikAADcDACALIARB2QJqKQAANwMAIA0gBEHRAmopAAA3AwAgBCAEKQDJAjcDiAEgBEHIAmogBEGIAWoQxIWAgAAgBC0AyAJFDQEgBCAELQDJAjoAiAFBqPDAgABBGCAEQYgBakHA8MCAAEGQ8cCAABDakICAAAALIAQgBC0AyQI6AIgBQajwwIAAQRggBEGIAWpBwPDAgABBgPHAgAAQ2pCAgAAACyAEQYgBaiAEQdACakHAARC8kYCAABogBEGIAWogBEHIAGogASACEMWFgIAAIQAgBEGQBGokgICAgAAgAEH/AXFBBEYLjhUDA38CfgZ/I4CAgIAAQbACayIFJICAgIAAIAUgAzUCKCADNQIkEKaLgIAAIAUgBSkDCDcDGCAFIAUpAwA3AxACQAJAAkACQAJAAkACQCAELQALDQAgBUGygICAADYC9AEgBSAFQRBqNgLwASAFQQE2AqQBIAVCATcClAEgBUHs8sCAADYCkAEgBSAFQfABajYCoAEgBUHQAGogBUGQAWoQrZCAgAAgAUHAAGooAgAgBSgCUCIGIAUoAlggAUHEAGooAgAoAigRg4CAgAAAAkAgBSgCVCIHRQ0AIAYgB0EBELeFgIAACyAFQfABaiACEK+QgIAAIAUpAxghCCAFKQMQIQkgBUGQAWpBEGoiBiAEQRBqKQIANwMAIAVBkAFqQQhqIgcgBEEIaikCADcDACAFIAQpAgA3A5ABIAVB0ABqIAEgBUHwAWogCSAIIAVBkAFqEO+BgIAAIAUtAFBBOUYNBSAFQZABakE4aiAFQdAAakE4aikDADcDACAFQZABakEwaiAFQdAAakEwaikDADcDACAFQZABakEoaiAFQdAAakEoaikDADcDACAFQZABakEgaiAFQdAAakEgaikDADcDACAFQZABakEYaiAFQdAAakEYaikDADcDACAGIAVB0ABqQRBqKQMANwMAIAcgBUHQAGpBCGopAwA3AwAgBSAFKQNQNwOQASAFQQA2AiggBUIBNwMgIAVB8AFqIAVBIGpB3OXAgAAQ7JCAgAAgBUGQAWogBUHwAWoQ7ImAgABFDQFB9OXAgABBNyAFQagCakGs5sCAAEGI58CAABDakICAAAALIARBFGooAgAiBkEobCEKIARBEGooAgAhCyAEKAIMIgwhBCAGRQ0CIAVBnAFqIQ1BACEGA0ACQCAMIAZqIgRBG2otAABFDQAgBEEoaiEEDAQLIAQpAwAhCCAFIARBCGopAwA3AyggBSAINwMgIAVBMGpBCGoiDiAEQSRqKAIANgIAIAUgBEEQaikCADcDQCAFIARBF2ooAAA2AEcgBSAEQRxqKQIANwMwIAVBsoCAgAA2AvQBIAUgBUEgajYC8AEgBUEBNgKkASAFQgE3ApQBIAVB7PLAgAA2ApABIAUgBUHwAWo2AqABIAVB0ABqIAVBkAFqEK2QgIAAIAUoAlQhByABKAJAIAUoAlAiDyAFKAJYIAEoAkQoAigRg4CAgAAAAkAgB0UNACAPIAdBARC3hYCAAAsgBUHwAWogAhCvkICAACAFKQMoIQggBSkDICEJIA0gBSkDMDcCACANQQhqIA4oAgA2AgAgBSAFKABHNgCXASAFIAUpA0A3A5ABIAVBADoAmwEgBUHQAGogASAFQfABaiAJIAggBUGQAWoQ74GAgAACQAJAIAUtAFBBOUYNACAFQZABakE4aiAFQdAAakE4aikDADcDACAFQZABakEwaiAFQdAAakEwaikDADcDACAFQZABakEoaiAFQdAAakEoaikDADcDACAFQZABakEgaiAFQdAAakEgaikDADcDACAFQZABakEYaiAFQdAAakEYaikDADcDACAFQZABakEQaiAFQdAAakEQaikDADcDACAFQZABakEIaiAFQdAAakEIaikDADcDACAFIAUpA1A3A5ABIAVBADYCoAIgBUIBNwOYAiAFQfABaiAFQZgCakHc5cCAABDskICAACAFQZABaiAFQfABahDsiYCAAEUNAUH05cCAAEE3IAVBqAJqQazmwIAAQYjnwIAAENqQgIAAAAsgCiAGQShqIgZHDQEMBQsLIAAgBSkDmAI3AgQgAEEMaiAFQZgCakEIaigCADYCACAFQZABahCng4CAACAAQQM2AgACQCAKQVhqIAZGDQAgCiAGa0FYakEobkEobCENQQAhAQNAAkAgBCABaiIGQcgAaigCACIHRQ0AIAZBxABqKAIAIAdBARC3hYCAAAsgDSABQShqIgFHDQALCyALRQ0BIAwgC0EobEEIELeFgIAADAELIAAgBSkDIDcCBCAAQQxqIAVBKGooAgA2AgAgBUGQAWoQp4OAgAAgAEEDNgIACwJAIANBMGooAgAiBEUNACADKAIsIARBKGxBCBC3hYCAAAsgAkEEaigCACIERQ0DIAIoAgAgBEEBELeFgIAADAMLIAwgCmoiBiAEa0EobiEHIAYgBEYNACAHQShsIQYgBEEcaiEEA0ACQCAEQQRqKAIAIgdFDQAgBCgCACAHQQEQt4WAgAALIARBKGohBCAGQVhqIgYNAAsLIAtFDQAgDCALQShsQQgQt4WAgAALIAVBsoCAgAA2AvQBIAUgBUEQajYC8AEgBUEBNgKkASAFQgE3ApQBIAVBmPPAgAA2ApABIAUgBUHwAWo2AqABIAVB0ABqIAVBkAFqEK2QgIAAIAFBwABqKAIAIAUoAlAiBCAFKAJYIAFBxABqKAIAKAIoEYOAgIAAAAJAIAUoAlQiBkUNACAEIAZBARC3hYCAAAsgBUHwAWpBCGogAkEIaigCADYCACAFIAIpAgA3A/ABIAVBkAFqIANB4AAQvJGAgAAaIAVB0ABqIAEgBUHwAWogBUGQAWoQ7YGAgAACQAJAAkACQAJAIAUtAFBBOUYNACAFQZABakE4aiAFQdAAakE4aikDADcDACAFQZABakEwaiAFQdAAakEwaikDADcDACAFQZABakEoaiAFQdAAakEoaikDADcDACAFQZABakEgaiAFQdAAakEgaikDADcDACAFQZABakEYaiAFQdAAakEYaikDADcDACAFQZABakEQaiAFQdAAakEQaikDADcDACAFQZABakEIaiAFQdAAakEIaikDADcDACAFIAUpA1A3A5ABIAVBADYCKCAFQgE3AyAgBUHwAWogBUEgakHc5cCAABDskICAACAFQZABaiAFQfABahDsiYCAAEUNAUH05cCAAEE3IAVBqAJqQazmwIAAQYjnwIAAENqQgIAAAAsgBUIANwNYIAVCATcDUCAFQQE7AWggBUEgahD1hoCAACAFQfABaiAFQdAAaiAFQSBqEKuFgIAAIAUoAvABRQ0BIAVBmAJqQQhqIgQgBUH8AWooAgA2AgAgBSAFKQL0ATcDmAICQCAFKAIkIgFFDQAgBSgCICABQQEQt4WAgAALIAVB8AFqQQhqIAQoAgA2AgAgBSAFKQOYAjcD8AEgBUGQAWpBiJ3BgABBJSAFQfABahDThICAACAFKAKQAUENRg0CIABBCGoiBCAFKQOQATcDACAEQRhqIAVBkAFqQRhqKQMANwMAIARBEGogBUGQAWpBEGopAwA3AwAgBEEIaiAFQZABakEIaikDADcDAAwDCyAAIAUpAyA3AgQgAEEMaiAFQShqKAIANgIAIAVBkAFqEKeDgIAAIABBAzYCAAwDCyAFQZwBaiAFQShqKAIANgIAIAUgBSkDIDcClAELIABBDTYCCCAAQQxqIAUpApQBNwIAIABBFGogBUGQAWpBDGooAgA2AgALIABBCzYCAAJAIAUoAlQiBEUNACAFKAJQIARBARC3hYCAAAsgBSgCXCIERQ0AIAVB4ABqKAIAIgFFDQAgBCABQQEQt4WAgAALIAVBsAJqJICAgIAAC64BAQN/I4CAgIAAQdAAayIBJICAgIAAIAEgABC5joCAACABQQhqQSBBmOfAgABBACABKAIAIAEoAgQQwIWAgAACQAJAIAEoAkgiAkHBAE8NAAJAAkAgAg0AQQEhAwwBCyACQQEQtoWAgAAiA0UNAgsgAyABQQhqIAIQvJGAgAAhAiABQdAAaiSAgICAACACDwsgAkHAAEHk4MCAABC5kICAAAALIAJBARCokICAAAAL5QEBBH8jgICAgABBwAFrIgEkgICAgAAgAUEIaiAAELmOgIAAIAEoAgwhAiABKAIIIQMCQEEQQQEQtoWAgAAiBA0AQRBBARCokICAAAALIAFB6ABqQgAQu4WAgAAgAUHoAGogAyACEL+FgIAAIAFBEGogAUHoAGpB2AAQvJGAgAAaIAFBEGoQvoWAgAAhACABQegAakIBELuFgIAAIAFB6ABqIAMgAhC/hYCAACABQRBqIAFB6ABqQdgAELyRgIAAGiAEIAFBEGoQvoWAgAA3AAggBCAANwAAIAFBwAFqJICAgIAAIAQLngEBBH8jgICAgABBwAFrIgEkgICAgAAgAUEIaiAAELmOgIAAIAEoAgwhAiABKAIIIQMCQEEIQQEQtoWAgAAiBA0AQQhBARCokICAAAALIAFB6ABqQgAQu4WAgAAgAUHoAGogAyACEL+FgIAAIAFBEGogAUHoAGpB2AAQvJGAgAAaIAQgAUEQahC+hYCAADcAACABQcABaiSAgICAACAEC4UCAQN/IABCBDcCGCAAQoCAgIDAADcCCCAAQgg3AgAgAEEgakIANwIAIABBEGpCADcCAAJAIANBBGooAgAiAEUNACADKAIAIABBARC3hYCAAAsgAygCDCEEAkAgA0EUaigCACIARQ0AIABBBXQhBSAEQRBqIQADQAJAIABBBGooAgAiBkUNACAAKAIAIAZBARC3hYCAAAsgAEEgaiEAIAVBYGoiBQ0ACwsCQCADQRBqKAIAIgBFDQAgBCAAQQV0QQgQt4WAgAALAkAgAkEUaigCACIARQ0AIAIoAhAgAEEBELeFgIAACwJAIAJBLGooAgAiAEUNACACKAIoIABBARC3hYCAAAsL9KABBgR/An4EfwJ+C38BfiOAgICAAEGQCGsiBSSAgICAACAFQfAAaiABQRBqKQIANwMAIAVB6ABqIAFBCGopAgA3AwAgBUEoakEIaiACQQhqKQMANwMAIAVBKGpBEGogAkEQaikDADcDACAFQShqQRhqIAJBGGopAwA3AwAgBUEoakEgaiACQSBqKQMANwMAIAVBKGpBKGogAkEoaikDADcDACAFQShqQTBqIAJBMGopAwA3AwAgBSABKQIANwNgIAUgAikDADcDKCAFQdgEakGg88CAAEEJELOKgIAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAUoAtgEQQhHDQAgBUH4AGpBCGogBUHYBGpBDGooAgA2AgAgBSAFKQLcBDcDeCAFQaABaiAEQegAELyRgIAAGiAFQdgGaiAFQfgAahCvkICAACAFQYgCakEIaiAFQdgGakEIaigCADYCACAFIAUpA9gGNwOIAgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFKAKgASIGDgoAAREQAgMEBQcGAAsgBUHkAWooAgAhByAFQeABaigCACEIIAVB2AFqKQMAIQkgBUHQAWopAwAhCiAFQcwBaigCACEBIAVByAFqKAIAIQsgBUHEAWooAgAhDCAFQcABaigCACECIAVBvAFqKAIAIQ0gBUG4AWooAgAhDiAFQbABaikDACEPIAUpA6gBIRBBASERQQEhEgJAIAVB6AFqKAIAIgRFDQAgBEF/SiITRQ0TIAQgExC2hYCAACISRQ0UCyASIAggBBC8kYCAACETAkAgAkUNACACQX9KIhJFDRMgAiASELaFgIAAIhFFDRULIBEgDiACELyRgIAAIRFBASESAkAgAUUNACABQX9KIhRFDRMgASAUELaFgIAAIhJFDRYLIBIgDCABELyRgIAAIRIgBUHYB2pCADcDACAFQegHakEBOwEAIAVByAdqQQE2AgAgBUHEB2ogATYCACAFQcAHaiABNgIAIAVBvAdqIBI2AgAgBUG4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2AIgBSAFKQKMBzcD+AMgBSkD6AYhCSAFKALkBiETIAUoAuAGIRQgBSgChAchDSAFKAKIByELIAUgAjYCjAMgBSASNgKIAyAFIBE2AoQDIAUgDDYCgAMgBSAPNwP4AiAFIAg2AvQCIAUgBzYC8AIgBUHYBmogBUHwAmoQp4WAgAACQCAFKQPYBlANACAFQeADakEQaiICIAEpAwA3AwAgBUHgA2pBCGoiBCAFQfgGaikDADcDACAFIAVB8AZqKQMAIg83A/AHIAUgDzcD4AMgBUHYBmpBEGopAwAhDyAFQeQGaigCACEBIAUoAuAGIQ4gBUGIAWpBEGogAikDADcDACAFQYgBakEIaiAEKQMANwMAIAUgBSkD4AM3A4gBDBELIAVB6AVqQQhqIgQgBUHYBmpBIGopAwA3AwAgBUHoBWpBEGoiDiABKQMANwMAIAUgBUHYBmpBGGopAwA3A+gFIAVB5AZqKAIAIQEgBUHYBmpBEGopAwAhCiAFKALgBiECIAVB2ARqQShqIAVBiAdqQcgAELyRgIAAGiAFQfAHakEQaiAOKQMAIg83AwAgBUHgA2pBCGogBCkDACIcNwMAIAVB4ANqQRBqIA83AwAgBUHYBGpBGGogHDcDACAFQdgEakEgaiAPNwMAIAUgCjcD4AQgBSABNgLcBCAFIAI2AtgEIAUgBSkD6AU3A+gEIAINDAwNCyAFKQLsBSIPQiCIpyEEIAUoAugFIQEgBUHYBGoQp4OAgAAgD6chAkEDIQ4gEiAIIAwbIhJFDRogESAHIAwbIBJBARC3hYCAAAwaCyAFQfACakEwaiAFQaABakE4aikDADcDACAFQfACakEoaiAFQaABakEwaikDADcDACAFQfACakEgaiAFQaABakEoaikDADcDACAFQfACakEYaiAFQaABakEgaikDADcDACAFQfACakEQaiAFQaABakEYaikDADcDACAFQfACakEIaiAFQaABakEQaikDADcDACAFIAUpA6gBNwPwAiAFQdgGaiAFQfACahCmhYCAAAJAAkACQCAFKALYBiICQQ9GDQAgBUHoBWpBCGoiASAFQdgGakEgaikDADcDACAFQegFakEQaiIEIAVB2AZqQShqKQMANwMAIAVB2ARqQThqIAVB2AZqQThqKQMANwMAIAVB2ARqQcAAaiAFQdgGakHAAGopAwA3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oAFqQaDzwIAAQQkQs4qAgAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBCgCoAFBCEcNACAEQRhqQQhqIARBrAFqKAIANgIAIAQgBCkCpAE3AxggA0H/AXEOBAECAwQBCyAEQShqQRhqIARBoAFqQRhqKQMANwMAIARBKGpBEGogBEGgAWpBEGopAwA3AwAgBEEoakEIaiAEQaABakEIaikDADcDACAEIAQpA6ABNwMoQanzwIAAQRIgBEEoakG888CAAEHc88CAABDakICAAAALIARBoAFqQRRqQQE2AgAgBEEoakEUakEANgIAIARCATcCpAEgBEGY9MCAADYCoAEgBEGBgICAADYCjAEgBEGY58CAADYCOCAEQgE3AiwgBEHc9MCAADYCKCAEIARBiAFqNgKwASAEIARBKGo2AogBIARBoAFqQeT0wIAAELaQgIAAAAsgBEGgAWpBFGpBATYCACAEQShqQRRqQQA2AgAgBEIBNwKkASAEQZj0wIAANgKgASAEQYGAgIAANgKMASAEQZjnwIAANgI4IARCATcCLCAEQbT0wIAANgIoIAQgBEGIAWo2ArABIAQgBEEoajYCiAEgBEGgAWpBvPTAgAAQtpCAgAAACyAEQgE3A6ABIARCADcDqAEgBEHgAWoQ9YaAgAAgBEGIAWogBEGgAWogBEHgAWoQqoWAgAAgBCgCiAFFDQEgBEHQAWpBCGoiASAEQZQBaigCADYCACAEIAQpAowBNwPQAQJAIAQoAuQBIgNFDQAgBCgC4AEgA0EBELeFgIAACyAEQYgBakEIaiABKAIANgIAIAQgBCkD0AE3A4gBIARBKGpBgp/BgABBJCAEQYgBahDThICAACAEKAIoQQ1GDRMgACAEKQMoNwMAIABBGGogBEEoakEYaikDADcDACAAQRBqIARBKGpBEGopAwA3AwAgAEEIaiAEQShqQQhqKQMANwMADBQLIARBoAFqQRBqIAFBEGopAgA3AwAgBEGgAWpBCGogAUEIaikCADcDACAEIAEpAgA3A6ABIARBKGogBEGgAWoQo4WAgAACQCAEKQMoIgVCAlINAEEHQQEQtoWAgAAiAUUNAiAEQQA2ApQBIAFBA2pBACgA7/PAgAA2AAAgAUEAKADs88CAADYAACAEQoeAgIDwADcCjAEgBCABNgKIASAEQdABahD1hoCAACAEQeABaiAEQYgBaiAEQdABahCqhYCAACAEKALgAUUNAyAEQcABakEIaiIBIARB7AFqKAIANgIAIAQgBCkC5AE3A8ABAkAgBCgC1AEiA0UNACAEKALQASADQQEQt4WAgAALIARB4AFqQQhqIAEoAgA2AgAgBCAEKQPAATcD4AEgBEGgAWpBgp/BgABBJCAEQeABahDThICAACAEKAKgAUENRg0RIAAgBCkDoAE3AwAgAEEYaiAEQaABakEYaikDADcDACAAQRBqIARBoAFqQRBqKQMANwMAIABBCGogBEGgAWpBCGopAwA3AwAMEgsgBCgCWCEGIAQoAlQhBwJAAkACQCAFQgFRDQAgBEEIaiAENQJQIAQ1AkwQpouAgAAgBCkDECEFIAQpAwghCCAEQaABakEQaiABQRBqKQIANwMAIARBoAFqQQhqIAFBCGopAgA3AwAgBCABKQIANwOgASAEQShqIARBoAFqIARBGGogCCAFEKSFgIAAIAQtAChBOUcNAkEGQQEQtoWAgAAiAUUNCCAEQQA2ApQBIAFBBGpBAC8AhPTAgAA7AAAgAUEAKACA9MCAADYAACAEQoaAgIDgADcCjAEgBCABNgKIASAEQdABahD1hoCAACAEQeABaiAEQYgBaiAEQdABahCqhYCAACAEKALgAUUNCSAEQcABakEIaiIBIARB7AFqKAIANgIAIAQgBCkC5AE3A8ABAkAgBCgC1AEiA0UNACAEKALQASADQQEQt4WAgAALIARB4AFqQQhqIAEoAgA2AgAgBCAEKQPAATcD4AEgBEGgAWpBgp/BgABBJCAEQeABahDThICAACAEKAKgAUENRw0BDBALQQZBARC2hYCAACIBRQ0FIARBADYCrAEgAUEEakEALwD388CAADsAACABQQAoAPPzwIAANgAAIARChoCAgOAANwKkASAEIAE2AqABIARB4AFqEPWGgIAAIARBiAFqIARBoAFqIARB4AFqEKqFgIAAIAQoAogBRQ0GIARB0AFqQQhqIgEgBEGUAWooAgA2AgAgBCAEKQKMATcD0AECQCAEKALkASIDRQ0AIAQoAuABIANBARC3hYCAAAsgBEGIAWpBCGogASgCADYCACAEIAQpA9ABNwOIASAEQShqQYKfwYAAQSQgBEGIAWoQ04SAgAAgBCgCKEENRg0NIAAgBCkDKDcDACAAQRhqIARBKGpBGGopAwA3AwAgAEEQaiAEQShqQRBqKQMANwMAIABBCGogBEEoakEIaikDADcDAAwOCyAAIAQpA6ABNwMAIABBGGogBEGgAWpBGGopAwA3AwAgAEEQaiAEQaABakEQaikDADcDACAAQQhqIARBoAFqQQhqKQMANwMADA8LQQdBARC2hYCAACIBRQ0HIARBADYClAEgAUEDakEAKAD888CAADYAACABQQAoAPnzwIAANgAAIARCh4CAgPAANwKMASAEIAE2AogBIARB0AFqEPWGgIAAIARB4AFqIARBiAFqIARB0AFqEKqFgIAAIAQoAuABRQ0IIARBwAFqQQhqIgEgBEHsAWooAgA2AgAgBCAEKQLkATcDwAECQCAEKALUASIDRQ0AIAQoAtABIANBARC3hYCAAAsgBEHgAWpBCGogASgCADYCACAEIAQpA8ABNwPgASAEQaABakGCn8GAAEEkIARB4AFqENOEgIAAIAQoAqABQQ1GDQkgACAEKQOgATcDACAAQRhqIARBoAFqQRhqKQMANwMAIABBEGogBEGgAWpBEGopAwA3AwAgAEEIaiAEQaABakEIaikDADcDAAwKCyAEQTRqIARB6AFqKAIANgIAIAQgBCkD4AE3AiwMEQtBB0EBEKiQgIAAAAsgBEGsAWogBEHYAWooAgA2AgAgBCAEKQPQATcCpAEMDQtBBkEBEKiQgIAAAAsgBEE0aiAEQegBaigCADYCACAEIAQpA+ABNwIsDAYLQQZBARCokICAAAALIARBrAFqIARB2AFqKAIANgIAIAQgBCkD0AE3AqQBDAYLQQdBARCokICAAAALIARBrAFqIARB2AFqKAIANgIAIAQgBCkD0AE3AqQBCyAAIAQpAqQBNwIEIABBDTYCACAAQQxqIARBoAFqQQxqKAIANgIACwJAIAQoAowBIgBFDQAgBCgCiAEgAEEBELeFgIAACwJAIAQoApQBIgBFDQACQCAEQZwBaigCACIBRQ0AIAFBGGwhAQNAAkAgAEEEaigCACIDRQ0AIAAoAgAgA0EBELeFgIAACwJAIABBEGooAgAiA0UNACAAQQxqKAIAIANBARC3hYCAAAsgAEEYaiEAIAFBaGoiAQ0ACwsgBEGYAWooAgAiAEUNACAEKAKUASAAQRhsQQQQt4WAgAALIARBKGoQp4OAgAAMBAsgACAEKQIsNwIEIABBDTYCACAAQQxqIARBKGpBDGooAgA2AgALAkAgBCgCpAEiAEUNACAEKAKgASAAQQEQt4WAgAALIAQoAqwBIgBFDQICQCAEQbQBaigCACIBRQ0AIAFBGGwhAQNAAkAgAEEEaigCACIDRQ0AIAAoAgAgA0EBELeFgIAACwJAIABBEGooAgAiA0UNACAAQQxqKAIAIANBARC3hYCAAAsgAEEYaiEAIAFBaGoiAQ0ACwsgBEGwAWooAgAiAEUNAiAEKAKsASAAQRhsQQQQt4WAgAAMAgsgACAEKQKkATcCBCAAQQ02AgAgAEEMaiAEQaABakEMaigCADYCAAsCQCAEKAKMASIARQ0AIAQoAogBIABBARC3hYCAAAsCQCAEKAKUASIARQ0AAkAgBEGcAWooAgAiAUUNACABQRhsIQEDQAJAIABBBGooAgAiA0UNACAAKAIAIANBARC3hYCAAAsCQCAAQRBqKAIAIgNFDQAgAEEMaigCACADQQEQt4WAgAALIABBGGohACABQWhqIgENAAsLIARBmAFqKAIAIgBFDQAgBCgClAEgAEEYbEEEELeFgIAACyAEQTBqKAIAIgBFDQAgBCgCLCAAQQEQt4WAgAALIAZFDQQgByAGQShsQQgQt4WAgAAMBAsgACAEKQKkATcCBCAAQQ02AgAgAEEMaiAEQaABakEMaigCADYCAAsCQCAEKAKMASIARQ0AIAQoAogBIABBARC3hYCAAAsCQCAEKAKUASIARQ0AAkAgBEGcAWooAgAiAUUNACABQRhsIQEDQAJAIABBBGooAgAiA0UNACAAKAIAIANBARC3hYCAAAsCQCAAQRBqKAIAIgNFDQAgAEEMaigCACADQQEQt4WAgAALIABBGGohACABQWhqIgENAAsLIARBmAFqKAIAIgBFDQAgBCgClAEgAEEYbEEEELeFgIAACyAEQTBqEKeDgIAAIAQoAhwiAEUNAyAEKAIYIABBARC3hYCAAAwDCyAAIAQpAiw3AgQgAEENNgIAIABBDGogBEEoakEMaigCADYCAAsCQCAEKAKkASIARQ0AIAQoAqABIABBARC3hYCAAAsgBCgCrAEiAEUNAAJAIARBtAFqKAIAIgFFDQAgAUEYbCEBA0ACQCAAQQRqKAIAIgNFDQAgACgCACADQQEQt4WAgAALAkAgAEEQaigCACIDRQ0AIABBDGooAgAgA0EBELeFgIAACyAAQRhqIQAgAUFoaiIBDQALCyAEQbABaigCACIARQ0AIAQoAqwBIABBGGxBBBC3hYCAAAsgBCgCHCIARQ0AIAQoAhggAEEBELeFgIAACwJAIAJBFGooAgAiAEUNACACKAIQIABBARC3hYCAAAsCQCACQSxqKAIAIgBFDQAgAigCKCAAQQEQt4WAgAALIARB8AFqJICAgIAAC7YDBQF/AX4CfwF+A38jgICAgABB8ABrIgMkgICAgAAgA0EIaiABIAIQhYeAgAAgA0E4aiADQQhqIAMgAyADIAMQ1YOAgAAgA0EoakEIaiICIANBOGpBCGopAwA3AwAgAyADKQM4NwMoAkACQAJAIAMoAlgiAUECRg0AIANBGGpBCGogAikDADcDACADIAMpAyg3AxggAykDaCEEIAMoAmQhAiADKAJgIQUgAygCXCEGIAMpA1AhByADKAJMIQggAygCSCEJIANBOGogA0EIahCHh4CAACADKAI4IgpBFUcNASAAIAMpAxg3AwAgACAENwMwIAAgAjYCLCAAIAU2AiggACAGNgIkIAAgATYCICAAIAc3AxggACAINgIUIAAgCTYCECAAQQhqIANBGGpBCGopAwA3AwAMAgsgACADKQMoNwIAIABBAjYCICAAQQhqIAIpAwA3AgAMAQsgACADKQI8NwIEIABBDGogA0E4akEMaigCADYCACAAQQI2AiAgACAKNgIAAkAgCEUNACAJIAhBARC3hYCAAAsgAkUNACAFIAJBARC3hYCAAAsgA0HwAGokgICAgAAL1xAFDn8BfgF/AX4BfyOAgICAAEHgAWsiBiSAgICAACAGQTBqIAEQjYeAgAACQAJAAkACQAJAAkAgBi0AMEEBcUUNACAGLQAxQf8BcUH7AEcNASABEIaHgIAAIAZBKGogARCAh4CAACAGLQAsIQcgBkEgaiAGKAIoIggQjYeAgABBACEJAkAgBi0AIEEBcQ0AQQAhCkEAIQtBAiEMDAQLIAZB0AFqQQRyIQ0gBi0AISEMIAdBAXEhDiAGQbABakEEciEPQQAhC0ECIRBBACEKA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgDEH/AXEiEUEsRg0AIBFB/QBGDQIgDkH/AXENAUEJIQwMEAsCQCAOQf8BcUUNAEEQIQwMEAsgCBCGh4CAACAGQRhqIAgQjYeAgAACQCAGLQAYQQFxDQBBBCEMDBALIAYtABkhDAsCQCAMQf8BcSIOQSJGDQBBECEMIA5B/QBHDQ9BEyEMDA8LIAZBsAFqIAgQ6YOAgAAgBi0AtAEhBwJAIAYoArABIgxBFUYNACAGIAYpALUBNwOgASAGIAZBvAFqKAAANgCnAQwPCyAHDgMEAwIBCwJAAkAgC0UNAAJAIAoNACAGQbABakGX98CAAEEIEOCCgIAAIAYoArABQRVHDQIgBkG8AWooAgAhEiAGQbABakEIaigCACETIAYoArQBIQoLIAZB2ABqQQhqIAZBkAFqQQhqKQMAIhQ3AwAgBkE4akEIaiIIIBQ3AwAgBiAGKQOQASIUNwNYIAYgEjYCiAEgBiATNgKEASAGIAo2AoABIAYgFDcDOCAGKQOIASEUIAZB2ABqIAEQiYeAgAAgBigCWCIBQRVHDQYgACAGKQM4NwMAIAAgFDcDMCAAIBM2AiwgACAKNgIoIAAgFTYCJCAAQQAgECAQQQJGGzYCICAAIBY3AxggACAXNgIUIAAgCzYCECAAQQhqIAgpAwA3AwAMEQsgBkGwAWpBh/fAgABBBRDggoCAACAGQdgAakEIaiAGQbABakEIaikDADcDACAGIAYpA7ABNwNYDA0LIAZB2ABqQQhqIAZBsAFqQQhqKQMANwMAIAYgBikDsAE3A1ggF0UNDCALIBdBARC3hYCAAAwMCyAGQbABaiAIEIuHgIAAAkACQCAGKAKwASIMQRVGDQAgBkHQAWpBDGogBkGwAWpBDGooAgA2AgAgBiAGKQK0ATcC1AEgBiAMNgLQAQwBCyAGQdABaiAIEICEgIAAIAYoAtABQRVGDQgLIAZB2ABqQQhqIAZB0AFqQQhqKQMANwMAIAYgBikD0AE3A1ggBkECNgJ4QQAhCQwNCyAKRQ0FIAZB2ABqQZf3wIAAQQgQ44KAgAAgBkECNgJ4QQAhCQwMCyAQQQJGDQMgBkHYAGpBjPfAgABBCxDjgoCAACAGQQI2AnhBACEJDAsLIAtFDQEgBkHYAGpBh/fAgABBBRDjgoCAACAGQQI2AnhBACEJDAoLIAAgBikCXDcCBCAAQQxqIAZB2ABqQQxqKAIANgIAIABBAjYCICAAIAE2AgACQCAXRQ0AIAsgF0EBELeFgIAACyATRQ0KIAogE0EBELeFgIAADAoLIAZB0AFqIAgQi4eAgAACQAJAAkAgBigC0AEiDEEVRg0AIA8gDSkCADcCACAPQQhqIA1BCGooAgA2AgAgBiAMNgKwAQwBCyAGQbABaiAIIAYgBiAGIAYQioSAgAAgBigCwAEiCw0BCyAGQdgAakEIaiAGQbABakEIaikDADcDACAGIAYpA7ABNwNYIAZBAjYCeEEAIQtBACEJDAkLIAZBkAFqQQhqIAZBsAFqQQhqKQMANwMAIAYgBikDsAE3A5ABIAYoAsQBIRcgBikDyAEhFgwCCyAGQbABaiAIEIuHgIAAAkACQCAGKAKwASIMQRVHDQAgBkEQaiAIEI2HgIAAAkAgBi0AEEEBcQ0AQQQhDCAVIQEMAgsCQCAGLQARQf8BcUHuAEcNACAIEIaHgIAAIAZBsAFqIAhBh/jAgABBAxCKh4CAACAGKAKwASIMQRVHDQFBACEQDAQLIAZBsAFqIAggBiAGIAYgBhD7g4CAACAGKAK0ASEVAkAgBigCsAEiDEEVRw0AQQEhEAwECyAGKAK8ASEIIAYoArgBIQEgFSEQDAELIAYoArwBIQggBigCuAEhASAGKAK0ASEQCyAGQQI2AnggBiAINgJkIAYgATYCYCAGIBA2AlwgBiAMNgJYQQAhCQwHCyAGQbABaiAIEIuHgIAAAkACQAJAIAYoArABIgxBFUYNACANIAYpArQBNwIAIA1BCGogBkG8AWooAgA2AgAgBiAMNgLQAQwBCyAGQdABaiAIIAYgBiAGIAYQ/4OAgAAgBigC0AFBFUYNAQsgBkHYAGpBCGogBkHQAWpBCGopAwA3AwAgBiAGKQPQATcDWCAGQQI2AnhBACEKQQAhCQwHCyAGKALcASESIAYoAtgBIRMgBigC1AEhCgsgBkEIaiAIEI2HgIAAQQAhDiAGLQAJIQwgBi0ACEEBcQ0AC0ECIQwMAwsgAEECNgIgIABBBDYCAAwECyAAQQI2AiAgAEEONgIADAMLIAtBAEchCQwBCyAGQeQAaiAGKACnATYAACAGIAc6AFwgBiAMNgJYIAYgBikDoAE3AF0gBkECNgJ4CwJAIApFDQAgE0UNACAKIBNBARC3hYCAAAsCQCALRSAJcg0AIBdFDQAgCyAXQQEQt4WAgAALIAZByABqQQhqIAZB2ABqQQhqKQMAIhY3AwAgBiAGKQNYIhQ3A0ggAEEIaiAWNwIAIAAgFDcCACAAQQI2AiALIAZB4AFqJICAgIAAC4wDAgZ/AX4jgICAgABBMGsiAySAgICAACADQQhqIAEgAhCFh4CAACADQRhqIANBCGogACAAIAAgABDXg4CAAAJAAkACQCADKAIYIgJFDQAgAygCLCEBIAMoAighBCADKAIkIQUgAygCICEGIAMoAhwhByADQRhqIANBCGoQh4eAgAAgAygCGCIIQRVHDQEgACABNgIUIAAgBDYCECAAIAU2AgwgACAGNgIIIAAgBzYCBCAAIAI2AgAMAgsgAykCHCEJIABBDGogA0EYakEMaikCADcCACAAIAk3AgQgAEEANgIADAELIABBCGogAykCHDcCACAAQRBqIANBJGooAgA2AgAgAEEANgIAIAAgCDYCBAJAIAdFDQAgAiAHQQEQt4WAgAALAkAgAUUNACABQQV0IQIgBUEQaiEAA0ACQCAAQQRqKAIAIgFFDQAgACgCACABQQEQt4WAgAALIABBIGohACACQWBqIgINAAsLIARFDQAgBSAEQQV0QQgQt4WAgAALIANBMGokgICAgAALsQ4CD38CfiOAgICAAEGgAWsiBiSAgICAACAGQShqIAEQjYeAgAACQAJAAkACQAJAAkACQAJAAkACQCAGLQAoQQFxRQ0AIAYtAClB/wFxQfsARw0BIAEQhoeAgAAgBkEgaiABEICHgIAAIAYtACQhByAGQRhqIAYoAiAiCBCNh4CAAEECIQlBACEKAkAgBi0AGEEBcQ0AQQAhC0EAIQwMBQsgBkGAAWpBBHIhDSAGLQAZIQ4gB0EBcSEPQQAhDEEAIQsDQAJAAkACQAJAAkACQAJAAkACQAJAIA5B/wFxIhBBLEYNACAQQf0ARg0CIA9B/wFxDQFBCSEJDA8LAkAgD0H/AXFFDQBBECEJDA8LIAgQhoeAgAAgBkEQaiAIEI2HgIAAAkAgBi0AEEEBcQ0AQQQhCQwPCyAGLQARIQ4LAkAgDkH/AXEiDkEiRg0AQRAhCSAOQf0ARw0OQRMhCQwOCyAGQZABaiAIEOKDgIAAIAYtAJQBIQcCQCAGKAKQASIOQRVGDQAgBiAGKQCVATcDcCAGIAZBnAFqKAAANgB3IA4hCQwOCyAHDgIDAgELIBEhDiAMIQgCQAJAAkAgDA0AIAZBkAFqQbH3wIAAQQYQ4IKAgAAgBigCkAFBFUcNASAGQZwBaigCACESIAZBmAFqKAIAIQ4gBigClAEhCAsCQCALDQAgBkGQAWpBt/fAgABBBRDggoCAACAGKAKQAUEVRw0CIAZBnAFqKAIAIRMgBkGYAWooAgAhFCAGKAKUASELCyAGIBQ2AmggBiALNgJkIAYgEjYCYCAGIA42AlwgBiAINgJYIAhFDRIgBkEwakEMaiAGQdgAakEEciIOQQhqKQIANwIAIAYgEzYCRCAGIAg2AjAgBiAOKQIANwI0IAZB2ABqIAEQiYeAgAAgBigCWCIBQRVHDQUgACAGKQMwNwIAIABBEGogBkEwakEQaikDADcCACAAQQhqIAZBMGpBCGopAwA3AgAMEwsgBkHkAGogBkGYAWopAwA3AgAgBiAGKQOQATcCXAwMCyAGQeQAaiAGQZgBaikDADcCACAGIAYpA5ABNwJcIA5FDQsgCCAOQQEQt4WAgAAMCwsgBkGQAWogCBCLh4CAAAJAAkAgBigCkAEiDkEVRg0AIAZBgAFqQQxqIAZBkAFqQQxqKAIANgIAIAYgBikClAE3AoQBIAYgDjYCgAEMAQsgBkGAAWogCBCAhICAACAGKAKAAUEVRg0GCyAGQeQAaiAGQYgBaikDADcCACAGIAYpA4ABNwJcDAkLIAtFDQMgBkHYAGpBBHJBt/fAgABBBRDjgoCAAAwICyAMRQ0BIAZB2ABqQQRyQbH3wIAAQQYQ44KAgAAMBwsgAEEIaiAGKQJcNwIAIABBEGogBkHYAGpBDGooAgA2AgAgAEEANgIAIAAgATYCBAJAIAYoAjQiAUUNACAIIAFBARC3hYCAAAsgBkE8ahCJg4CAACAGQTBqQRBqKAIAIghFDQ0gBigCPCAIQQV0QQgQt4WAgAAMDQsgBkGQAWogCBCLh4CAAAJAAkAgBigCkAEiDkEVRw0AIAZBkAFqIAgQ/IOAgAAgBigCnAEhEiAGKAKYASEPIAYoApQBIQwgBigCkAEiDkEVRw0BIA8hEQwDCyAGKAKcASESIAYoApgBIQ8gBigClAEhDAsgBkHoAGogEjYCACAGQeQAaiAPNgIAIAZB4ABqIAw2AgAgBiAONgJcQQAhCiAGQQA2AlgCQCALDQBBACEMDAsLQQAhDAwJCyAGQZABaiAIEIuHgIAAAkACQAJAIAYoApABIg5BFUYNACANIAYpApQBNwIAIA1BCGogBkGcAWooAgA2AgAgBiAONgKAAQwBCyAGQYABaiAIEN+DgIAAIAYoAoABQRVGDQELIAZB5ABqIAZBiAFqKQMANwIAIAYgBikDgAE3AlxBACEKIAZBADYCWEEARQ0KQQAhCwwJCyAGKAKMASETIAYoAogBIRQgBigChAEhCwsgBkEIaiAIEI2HgIAAQQAhDyAGLQAJIQ4gBi0ACEEBcQ0ADAULCyAAQoCAgIDAADcCAAwICyAAQoCAgIDgATcCAAwHC0EAIQoMAgsgDEEARyEKIAtFDQMMAgsgBkHgAGogBzoAACAGQegAaiAGKAB3NgAAIAYgCTYCXCAGIAYpA3A3AGELIAYgCjYCWCALRQ0BCwJAIBNFDQAgE0EFdCEBIAtBEGohCANAAkAgCEEEaigCACIORQ0AIAgoAgAgDkEBELeFgIAACyAIQSBqIQggAUFgaiIBDQALCyAURQ0AIAsgFEEFdEEIELeFgIAACyAMRSAKcg0AIBFFDQAgDCARQQEQt4WAgAALIAZB0ABqIAZB2ABqQQxqKQIAIhU3AwAgBiAGKQJcIhY3A0ggAEEMaiAVNwIAIAAgFjcCBCAAQQA2AgALIAZBoAFqJICAgIAAC4MCAgR/AX4jgICAgABBIGsiAySAgICAACADIAEgAhCFh4CAACADQRBqIAMQ2YOAgAACQAJAAkAgAygCECICQRVHDQAgA0EQakEMaiIEKAIAIQUgA0EQakEIaigCACECIAMoAhQhASADQRBqIAMQh4eAgAAgAygCECIGQRVHDQEgACABNgIEIABBFTYCACAAQQxqIAU2AgAgAEEIaiACNgIADAILIAMpAhQhByAAIAMoAhw2AgwgACAHNwIEIAAgAjYCAAwBCyAAIAMpAhQ3AgQgAEEMaiAEKAIANgIAIAAgBjYCACACRQ0AIAEgAkEFdEEBELeFgIAACyADQSBqJICAgIAAC9MCAgV/AX4jgICAgABBIGsiAiSAgICAACACQQhqIAEQjYeAgAACQAJAAkACQCACLQAIQQFxRQ0AIAItAAlB/wFxQdsARw0BIAEQhoeAgAAgAiABEICHgIAAIAJBEGogAigCACACLQAEQQFxEISBgIAAIAIoAhAiA0EVRw0CIAJBEGpBDGoiBCgCACEFIAJBEGpBCGooAgAhAyACKAIUIQYgAkEQaiABEIiHgIAAAkAgAigCECIBQRVHDQAgACAGNgIEIABBFTYCACAAQQxqIAU2AgAgAEEIaiADNgIADAQLIAAgAikCFDcCBCAAQQxqIAQoAgA2AgAgACABNgIAIANFDQMgBiADQQV0QQEQt4WAgAAMAwsgAEEENgIADAILIABBDjYCAAwBCyACKQIUIQcgACACKAIcNgIMIAAgBzcCBCAAIAM2AgALIAJBIGokgICAgAAL9gkHAX8BfgZ/AX4KfwF+A38jgICAgABBgAFrIgMkgICAgAAgA0EIaiABIAIQhYeAgAAgAyADQQhqEI2HgIAAAkACQAJAAkAgAy0AAEEBcQ0AQQQhAgwBCwJAAkAgAy0AAUH/AXEiAkH7AEYNAAJAIAJBIkYNAEEKIQIMAwsgA0EYaiADQQhqEP+GgIAAEK6FgIAADAELIANBCGoQhoeAgAAgA0EYaiADQQhqEP+GgIAAEK+FgIAACyADKQMYIgRCClINASADQShqKQMAIQQgA0EkaigCACEBIAMoAiAhAgsgACACNgIIIABCCjcDACAAQRBqIAQ3AwAgAEEMaiABNgIADAELIAMoAnwhBSADKAJ4IQYgAygCdCEHIAMoAnAhCCADKAJsIQkgAygCaCEKIAMpA2AhCyADKAJcIQwgAygCWCENIAMoAlQhDiADKAJQIQ8gAygCTCEQIAMoAkghESADKAJEIRIgAygCQCETIAMoAjwhFCADKAI4IRUgAygCNCEBIAMoAjAhAiADKQMoIRYgAygCJCEXIAMoAiAhGCADQRhqIANBCGoQh4eAgAACQCADKAIYIhlBFUYNACAAQQxqIAMpAhw3AgAgAEEUaiADQRhqQQxqKAIANgIAIABCCjcDACAAIBk2AggCQAJAAkACQAJAAkACQAJAAkAgBKcOCQECAwQFBgcICgALAkAgAUUNACACIAFBARC3hYCAAAsCQCATRQ0AIBQgE0EBELeFgIAACwJAIAxFDQAgDSAMQQEQt4WAgAALAkAgCUUNACAKIAlBARC3hYCAAAsgBkUNCSAHIAZBARC3hYCAAAwJCwJAIAFFDQAgAiABQQEQt4WAgAALAkAgE0UNACAUIBNBARC3hYCAAAsgDEUNCCANIAxBARC3hYCAAAwICwJAIAFFDQAgAiABQQEQt4WAgAALIBNFDQcgFCATQQEQt4WAgAAMBwsCQCASRQ0AIBMgEkEBELeFgIAACwJAIA5FDQAgDkEMbCECIBAhAANAAkAgAEEEaigCACIBRQ0AIAAoAgAgAUEBELeFgIAACyAAQQxqIQAgAkF0aiICDQALCwJAIA9FDQAgECAPQQxsQQQQt4WAgAALIAxFDQYgDSAMQQEQt4WAgAAMBgsCQCASRQ0AIBMgEkEBELeFgIAACwJAIA5FDQAgDkEMbCECIBAhAANAAkAgAEEEaigCACIBRQ0AIAAoAgAgAUEBELeFgIAACyAAQQxqIQAgAkF0aiICDQALCyAPRQ0FIBAgD0EMbEEEELeFgIAADAULIBUgFyACGyIARQ0EIAEgGCACGyAAQQEQt4WAgAAMBAsgFSAXIAIbIgBFDQMgASAYIAIbIABBARC3hYCAAAwDCyAVIBcgAhsiAEUNAiABIBggAhsgAEEBELeFgIAADAILIBUgFyACGyIARQ0BIAEgGCACGyAAQQEQt4WAgAAMAQsgACAFNgJkIAAgBjYCYCAAIAc2AlwgACAINgJYIAAgCTYCVCAAIAo2AlAgACALNwNIIAAgDDYCRCAAIA02AkAgACAONgI8IAAgDzYCOCAAIBA2AjQgACARNgIwIAAgEjYCLCAAIBM2AiggACAUNgIkIAAgFTYCICAAIAE2AhwgACACNgIYIAAgFjcDECAAIBc2AgwgACAYNgIIIAAgBDcDAAsgA0GAAWokgICAgAAL2gEBAX8jgICAgABBIGsiAySAgICAACADIAEgAhCFh4CAACADQRBqIAMgAyADIAMgAxDcg4CAAAJAAkAgAygCECICQRVHDQAgAy0AFCECIANBEGogAxCHh4CAAAJAIAMoAhAiAUEVRw0AIABBFTYCACAAIAI6AAQMAgsgACADKQIUNwIEIABBDGogA0EQakEMaigCADYCACAAIAE2AgAMAQsgACADKQAVNwAFIABBDGogA0EQakEMaigAADYAACAAIAMtABQ6AAQgACACNgIACyADQSBqJICAgIAAC5wCAQJ/I4CAgIAAQSBrIgYkgICAgAAgBkEIaiABEI2HgIAAAkACQAJAAkAgBi0ACEEBcUUNACAGLQAJQf8BcSIHQSJGDQEgB0H7AEYNAiAAQQo2AgAMAwsgAEEENgIADAILIAZBEGogARD/hoCAABD6g4CAAAJAAkACQAJAAkAgBigCECIBQRVHDQAgBi0AFA4EAQIDBAELIAAgBi8AFTsABSAAQQdqIAYtABc6AAAgBi0AFCEHIAAgBikDGDcCCCAAIAc6AAQgACABNgIADAULIABBDjYCAAwECyAAQQ42AgAMAwsgAEEONgIADAILIABBDjYCAAwBCyABEIaHgIAAIAAgARD/hoCAABCxhYCAAAsgBkEgaiSAgICAAAuVAwEFfyOAgICAAEEwayIGJICAgIAAIAZBGGogARCNh4CAAEEEIQcCQCAGLQAYQQFxRQ0AQQ4hByAGLQAZQf8BcUH7AEcNACABEIaHgIAAIAZBEGogARCAh4CAACAGLQAUIQggBkEIaiAGKAIQIgkQjYeAgABBAiEHAkAgBi0ACEEBcUUNACAIQQFxIQgCQAJAAkAgBi0ACSIKQf8BcSIHQSxGDQAgB0H9AEYNAkEJIQcgCA0BDAMLQRAhByAIDQIgCRCGh4CAACAGIAkQjYeAgABBBCEHIAYtAABBAXFFDQIgBi0AASEKCwJAIApB/wFxIghBIkYNAEEQIQcgCEH9AEcNAkETIQcMAgsgBkEgaiAJEOeDgIAAIAYoAiAiB0EVRw0BCyAGQSBqIAEQiYeAgABBFSEHIAYoAiAiAUEVRg0BIAAgBikCJDcCBCAAQQxqIAZBIGpBDGooAgA2AgAgASEHDAELIAAgBikCJDcCBCAAQQxqIAZBIGpBDGooAgA2AgALIAAgBzYCACAGQTBqJICAgIAAC5gDAgV/AX4jgICAgABBIGsiAiSAgICAACACQQhqIAEQjYeAgAACQAJAAkACQCACLQAIQQFxRQ0AIAItAAlB/wFxQdsARw0BIAEQhoeAgAAgAiABEICHgIAAIAJBEGogAigCACACLQAEQQFxEIaBgIAAIAIoAhAiA0EVRw0CIAJBEGpBDGoiBCgCACEDIAJBEGpBCGooAgAhBSACKAIUIQYgAkEQaiABEIiHgIAAAkAgAigCECIBQRVHDQAgACAGNgIEIABBFTYCACAAQQxqIAM2AgAgAEEIaiAFNgIADAQLIAAgAikCFDcCBCAAQQxqIAQoAgA2AgAgACABNgIAAkAgA0UNACADQQxsIQAgBiEBA0ACQCABQQRqKAIAIgNFDQAgASgCACADQQEQt4WAgAALIAFBDGohASAAQXRqIgANAAsLIAVFDQMgBiAFQQxsQQQQt4WAgAAMAwsgAEEENgIADAILIABBDjYCAAwBCyACKQIUIQcgACACKAIcNgIMIAAgBzcCBCAAIAM2AgALIAJBIGokgICAgAALmwMCBX8BfiOAgICAAEEgayICJICAgIAAIAJBCGogARCNh4CAAAJAAkACQAJAIAItAAhBAXFFDQAgAi0ACUH/AXFB2wBHDQEgARCGh4CAACACIAEQgIeAgAAgAkEQaiACKAIAIAItAARBAXEQhYGAgAAgAigCECIDQRVHDQIgAkEQakEMaiIEKAIAIQMgAkEQakEIaigCACEFIAIoAhQhBiACQRBqIAEQiIeAgAACQCACKAIQIgFBFUcNACAAIAY2AgQgAEEVNgIAIABBDGogAzYCACAAQQhqIAU2AgAMBAsgACACKQIUNwIEIABBDGogBCgCADYCACAAIAE2AgACQCADRQ0AIANBBXQhACAGQRBqIQEDQAJAIAFBBGooAgAiA0UNACABKAIAIANBARC3hYCAAAsgAUEgaiEBIABBYGoiAA0ACwsgBUUNAyAGIAVBBXRBCBC3hYCAAAwDCyAAQQQ2AgAMAgsgAEEONgIADAELIAIpAhQhByAAIAIoAhw2AgwgACAHNwIEIAAgAzYCAAsgAkEgaiSAgICAAAvEAwIDfwF+I4CAgIAAQSBrIgIkgICAgAAgAkEIaiABEI2HgIAAAkACQAJAAkACQAJAAkACQAJAIAItAAhBAXFFDQAgAi0ACUH/AXFBIkcNASABEIaHgIAAIAJBEGogARCMh4CAACACKAIQIgFBFUcNAiACQRxqKAIAIQMgAkEYaigCACEBAkAgAigCFCIEDQACQAJAIANBfGoOBgAJCQkJAQkLIAEoAABBACgA+t/AgABGDQkMCAsgAUH+38CAAEEJELqRgIAADQcgAEEVNgIAIABBAToABAwJCwJAAkAgA0F8ag4GAAUFBQUBBQsgBCgAAEEAKAD638CAAEYNBQwECyAEQf7fwIAAQQkQupGAgAANAyAAQRU2AgAgAEEBOgAEDAULIABBBDYCAAwHCyAAQQ42AgAMBgsgAikCFCEFIAAgAigCHDYCDCAAIAU3AgQgACABNgIADAULIAAgBCADQfTgwIAAQQIQ4YKAgAAMAQsgAEEVNgIAIABBADoABAsgAUUNAiAEIAFBARC3hYCAAAwCCyAAIAEgA0H04MCAAEECEOGCgIAADAELIABBFTYCACAAQQA6AAQLIAJBIGokgICAgAAL1wICA38BfiOAgICAAEEgayICJICAgIAAIAJBCGogARCNh4CAAAJAAkACQAJAIAItAAhBAXFFDQAgAi0ACUH/AXFBIkcNASABEIaHgIAAIAJBEGogARCMh4CAACACKAIQIgFBFUcNAiACQRxqKAIAIQMgAkEQakEIaigCACEBAkAgAigCFCIEDQACQAJAIANBCEcNACABKQAAQQApAIa5wYAAUQ0BCyAAIAEgA0GQucGAAEEBEOGCgIAADAULIABBFTYCAAwECwJAAkACQCADQQhHDQAgBCkAAEEAKQCGucGAAFENAQsgACAEIANBkLnBgABBARDhgoCAAAwBCyAAQRU2AgALIAFFDQMgBCABQQEQt4WAgAAMAwsgAEEENgIADAILIABBDjYCAAwBCyACKQIUIQUgACACKAIcNgIMIAAgBTcCBCAAIAE2AgALIAJBIGokgICAgAALxwMCA38BfiOAgICAAEEgayICJICAgIAAIAJBCGogARCNh4CAAAJAAkACQAJAAkACQAJAAkAgAi0ACEEBcUUNACACLQAJQf8BcUEiRw0BIAEQhoeAgAAgAkEQaiABEIyHgIAAIAIoAhAiAUEVRw0CIAJBHGooAgAhAyACQRhqKAIAIQECQCACKAIUIgQNAAJAAkACQAJAAkAgA0F7ag4CAgABCyABQdqhwIAAQQYQupGAgABFDQgLIABBBGohAwwBCyAAQQRqIQMgAUHgocCAAEEFELqRgIAARQ0BCyADQQI6AAAMCAsgA0EBOgAADAcLAkACQAJAAkACQCADQXtqDgICAAELIARB2qHAgABBBhC6kYCAAEUNCAsgAEEEaiEDDAELIABBBGohAyAEQeChwIAAQQUQupGAgABFDQELIANBAjoAAAwGCyADQQE6AAAMBQsgAEEENgIADAYLIABBDjYCAAwFCyACKQIUIQUgACACKAIcNgIMIAAgBTcCBCAAIAE2AgAMBAsgAEEAOgAEDAILIABBADoABAsgAEEVNgIAIAFFDQEgBCABQQEQt4WAgAAMAQsgAEEVNgIACyACQSBqJICAgIAAC6cDAgN/AX4jgICAgABBIGsiAiSAgICAACACQQhqIAEQjYeAgAACQAJAAkACQCACLQAIQQFxRQ0AIAItAAlB/wFxQSJHDQEgARCGh4CAACACQRBqIAEQjIeAgAAgAigCECIBQRVHDQIgAkEcaigCACEDIAJBGGooAgAhAQJAIAIoAhQiBA0AAkACQAJAIANBD0cNAAJAIAFBmKPAgABBDxC6kYCAAEUNACAAQQRqIQMgAUGno8CAAEEPELqRgIAADQIgA0EBOgAADAMLIABBADoABAwCCyAAQQRqIQMLIANBAjoAAAsgAEEVNgIADAQLAkACQAJAIANBD0cNAAJAIARBmKPAgABBDxC6kYCAAEUNACAAQQRqIQMgBEGno8CAAEEPELqRgIAADQIgA0EBOgAADAMLIABBADoABAwCCyAAQQRqIQMLIANBAjoAAAsgAEEVNgIAIAFFDQMgBCABQQEQt4WAgAAMAwsgAEEENgIADAILIABBDjYCAAwBCyACKQIUIQUgACACKAIcNgIMIAAgBTcCBCAAIAE2AgALIAJBIGokgICAgAALvgMCA38BfiOAgICAAEEgayICJICAgIAAIAJBCGogARCNh4CAAAJAAkACQAJAAkACQAJAAkACQCACLQAIQQFxRQ0AIAItAAlB/wFxQSJHDQEgARCGh4CAACACQRBqIAEQjIeAgAAgAigCECIBQRVHDQIgAkEcaigCACEDIAJBGGooAgAhAQJAIAIoAhQiBA0AAkACQCADQXxqDgMACQEJCyABKAAAQQAoAMj5wIAARg0JDAgLIAFBzPnAgABBBhC6kYCAAA0HIABBFTYCACAAQQE6AAQMCQsCQAJAIANBfGoOAwAFAQULIAQoAABBACgAyPnAgABGDQUMBAsgBEHM+cCAAEEGELqRgIAADQMgAEEVNgIAIABBAToABAwFCyAAQQQ2AgAMBwsgAEEONgIADAYLIAIpAhQhBSAAIAIoAhw2AgwgACAFNwIEIAAgATYCAAwFCyAAIAQgA0HY+cCAAEECEOGCgIAADAELIABBFTYCACAAQQA6AAQLIAFFDQIgBCABQQEQt4WAgAAMAgsgACABIANB2PnAgABBAhDhgoCAAAwBCyAAQRU2AgAgAEEAOgAECyACQSBqJICAgIAAC/MBAgN/AX4jgICAgABBIGsiAiSAgICAACAC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gICAgABBIGsiBiSAgICAACAGQQhqIAEQjYeAgAACQAJAAkACQCAGLQAIQQFxRQ0AIAYtAAlB/wFxIgdBIkYNASAHQfsARg0CIABCgYCAgKABNwMADAMLIABCgYCAgMAANwMADAILIAZBEGogARD/hoCAABD5g4CAAAJAAkAgBigCECIBQRVHDQAgAEEONgIEDAELIAAgBi8AFTsACSAAQQtqIAYtABc6AAAgBi0AFCEHIABBDGogBikDGDcCACAAQQhqIAc6AAAgACABNgIECyAAQQE2AgAMAQsgARCGh4CAACAAIAEQ/4aAgAAQtIWAgAALIAZBIGokgICAgAALygMCA38BfiOAgICAAEEgayICJICAgIAAIAJBCGogARCNh4CAAAJAAkACQAJAAkACQAJAAkACQCACLQAIQQFxRQ0AIAItAAlB/wFxQSJHDQEgARCGh4CAACACQRBqIAEQjIeAgAAgAigCECIBQRVHDQIgAkEcaigCACEDIAJBGGooAgAhAQJAIAIoAhQiBA0AAkACQCADQXpqDgcACQkJCQkBCQsgAUHsusGAAEEGELqRgIAARQ0JDAgLIAFB8rrBgABBDBC6kYCAAA0HIABBFTYCACAAQQE6AAQMCQsCQAJAIANBemoOBwAFBQUFBQEFCyAEQey6wYAAQQYQupGAgABFDQUMBAsgBEHyusGAAEEMELqRgIAADQMgAEEVNgIAIABBAToABAwFCyAAQQQ2AgAMBwsgAEEONgIADAYLIAIpAhQhBSAAIAIoAhw2AgwgACAFNwIEIAAgATYCAAwFCyAAIAQgA0GAu8GAAEECEOSCgIAADAELIABBFTYCACAAQQA6AAQLIAFFDQIgBCABQQEQt4WAgAAMAgsgACABIANBgLvBgABBAhDkgoCAAAwBCyAAQRU2AgAgAEEAOgAECyACQSBqJICAgIAAC/MBAgN/AX4jgICAgABBIGsiAiSAgICAACACQQhqIAEQjYeAgAACQAJAAkACQCACLQAIQQFxRQ0AIAItAAlB/wFxQSJHDQEgARCGh4CAACACQRBqIAEQjIeAgAAgAigCECIBQRVHDQIgAkEcaigCACEDIAJBGGooAgAhAQJAIAIoAhQiBA0AIAAgASADELCFgIAADAQLIAAgBCADELCFgIAAIAFFDQMgBCABQQEQt4WAgAAMAwsgAEEE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mANqIAdBiAJqEPSJgIAAIAdBoAFqQQhqIgYgB0GYA2pBCWopAAA3AwAgB0GgAWpBEGoiCyAHQZgDakERaikAADcDACAHQaABakEYaiINIAdBmANqQRlqKQAANwMAIAdBoAFqQSBqIhogB0GYA2pBIWopAAA3AwAgB0GgAWpBKGoiGyAHQZgDakEpaikAADcDACAHQaABakEwaiISIAdBmANqQTFqKQAANwMAIAdBoAFqQTdqIhMgB0HQA2opAAA3AAAgByAHKQCZAzcDoAEgBy0AmAMiF0E5Rg0BIABBCWogBykDoAE3AAAgAEHAAGogEykAADcAACAAQTlqIBIpAwA3AAAgAEExaiAbKQMANwAAIABBKWogGikDADcAACAAQSFqIA0pAwA3AAAgAEEZaiALKQMANwAAIABBEWogBikDADcAACAAQgI3AwAgACAXOgAIDAILQTtBARCokICAAAALAkACQAJAAkACQAJAIAcoAnAiEg0AQQAhBkEEIRsMAQsgBygCaCEaIBJBAnQiBkEEELaFgIAAIhtFDQEgGyEGIBohCwJAIBJBKGxBWGoiE0EobiIXQQFqQQdxIg1FDQAgDUEKbCENIBshBiAaIQsDQCAGIAtBCGopAwA+AgAgBkEEaiEGIAtBKGohCyANQXZqIg0NAAsLAkAgE0GYAkkNACAaIBJBKGxqIRogC0GgAmohCwNAIAYgC0HofWopAwA+AgAgBkEEaiALQZB+aikDAD4CACAGQQhqIAtBuH5qKQMAPgIAIAZBDGogC0HgfmopAwA+AgAgBkEQaiALQYh/aikDAD4CACAGQRRqIAtBsH9qKQMAPgIAIAZBGGogC0FYaikDAD4CACAGQRxqIAspAwA+AgAgBkEgaiEGIAtBIGohDSALQcACaiELIA0gGkcNAAsLIBdBAWohBgsgGyAGELOCgIAAIAZFDQMgGygCACAEKAIkSw0CQTlBARC2hYCAACILRQ0BIAtBACkAh/3AgAA3AAAgC0EIakEAKQCP/cCAADcAACALQRBqQQApAJf9wIAANwAAIAtBGGpBACkAn/3AgAA3AAAgC0EgakEAKQCn/cCAADcAACALQShqQQApAK/9wIAANwAAIAtBMGpBACkAt/3AgAA3AAAgC0E4akEALQC//cCAADoAACAHQTk2AowCIAcgCzYCiAIgB0E5NgKQ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gIAAC0EAIQBBACECIARFDQQMAgsCQCAAKAIAIgFFDQAgAkEBaiEHIABB1AlqLwEAIQULAkBB6AxBuAwgAhsiAkUNACAAIAJBBBC3hYCAAAsgASEAIAchAiABDQALC0HciMCAAEErQeiJwIAAELuQgIAAAAsgAkUNASACQX9qIQUCQCACQQdxIgBFDQADQCACQX9qIQIgASgCuAwhASAAQX9qIgANAAsLIAVBB0kNAQNAIAEoArgMKAK4DCgCuAwoArgMKAK4DCgCuAwoArgMKAK4DCEBIAJBeGoiAg0ADAILCyADRQ0AIAFFDQELQQAhAANAIAEoAgAhAgJAQegMQbgMIAAbIgVFDQAgASAFQQQQt4WAgAALIABBf2ohACACIQEgAg0ACwsLvQQBBn8CQCAAKAIAIgENACAAQQhqEL6EgIAADwsCQCAAQQRqKAIAIgJFDQAgASACQQEQt4WAgAALAkAgAEEUaigCACIBRQ0AIAAoAgwiAyABQfAAbGohBANAAkAgA0EMaigCACICRQ0AIAMoAgQhASACQRRsIQUDQAJAAkACQAJAIAEtAAAOBAAAAAEDCyABQQhqIQIMAQsgAUEEaiECCyACQQRqKAIAIgZFDQAgAigCACAGQQEQt4WAgAALIAFBFGohASAFQWxqIgUNAAsLIANB8ABqIQECQCADQQhqKAIAIgJFDQAgAygCBCACQRRsQQQQt4WAgAALIAEhAyABIARHDQALCwJAIABBEGooAgAiAUUNACAAKAIMIAFB8ABsQQQQt4WAgAALAkAgAEE8aigCACIBRQ0AIAAoAjggAUEBELeFgIAACwJAIABBzABqKAIAIgFFDQAgAEHEAGooAgAiAyABQfAAbGohBANAAkAgA0EMaigCACICRQ0AIAMoAgQhASACQRRsIQUDQAJAAkACQAJAIAEtAAAOBAAAAAEDCyABQQhqIQIMAQsgAUEEaiECCyACQQRqKAIAIgZFDQAgAigCACAGQQEQt4WAgAALIAFBFGohASAFQWxqIgUNAAsLIANB8ABqIQECQCADQQhqKAIAIgJFDQAgAygCBCACQRRsQQQQt4WAgAALIAEhAyABIARHDQALCwJAIABByABqKAIAIgFFDQAgACgCRCABQfAAbEEEELeFgIAACwvTKwMGfwN+EH8jgICAgABB0AVrIgYkgICAgAACQAJAAkAgBSgCAA0AIAZB+ARqIAVBCGpB2AAQvJGAgAAaAkAgBikD+AQgBCgCKCIFrVENACAGQcwCakGPgICAADYCACAGQYKAgIAANgLEAiAGIARBKGo2AsACIAYgBkH4BGo2AsgCIAZBAjYCFCAGQgI3AgQgBkG0gMGAADYCACAGIAZBwAJqNgIQIAZB4ANqIAYQrZCAgAAgBkGzBGogBkHgA2pBCGooAgA2AAAgBiAGKQPgAzcAqwQgBkEIaiAGQa8EaikAADcAACAGQeQAOgAAIAYgBikAqAQ3AAEgACAGELmHgIAAAkAgBkGMBWooAgAiBUUNACAGKAKIBSAFQQEQt4WAgAALAkAgBkGcBWooAgAiBUUNACAGQZQFaigCACIHIAVB8ABsaiEIA0ACQCAHQQxqKAIAIglFDQAgBygCBCEFIAlBFGwhCgNAAkACQAJAAkAgBS0AAA4EAAAAAQMLIAVBCGohCQwBCyAFQQRqIQkLIAlBBGooAgAiC0UNACAJKAIAIAtBARC3hYCAAAsgBUEUaiEFIApBbGoiCg0ACwsgB0HwAGohBQJAIAdBCGooAgAiCUUNACAHKAIEIAlBFGxBBBC3hYCAAAsgBSEHIAUgCEcNAAsLAkAgBkGYBWooAgAiBUUNACAGKAKUBSAFQfAAbEEEELeFgIAACwJAAkAgBkHEBWooAgAiBUUNACAGQRhqIAU2AgAgBkEUaiAGKALABSIJNgIAIAYgBTYCCCAGIAk2AgRBACEFIAZBADYCACAGQcgFaigCACEJDAELQQIhBSAGQQI2AgBBACEJCyAGIAk2AiAgBiAFNgIQIAYQloSAgAAMAgsgBkHAAmpBMGogBkH4BGpBwABqKQMANwMAIAZBwAJqQShqIAZB+ARqQThqKQMANwMAIAZBwAJqQSBqIAZB+ARqQTBqKQMANwMAIAZBwAJqQRhqIAZB+ARqQShqKQMANwMAIAZBwAJqQRBqIAZB+ARqQSBqKQMANwMAIAZBwAJqQQhqIAZB+ARqQRhqKQMANwMAIAZBwAJqQcAAaiAGQfgEakHQAGooAgA2AgAgBiAGKQOIBTcDwAIgBiAGKQPABTcD+AIgBikDgAUhDCAGQagEakEQaiAEQTRqKAIANgIAIAYgBCkCLDcDsAQgBCkDGCENIAQpAyAhDiAGQRBqIARByABqKQMANwMAIAZBCGogBEHAAGopAwA3AwAgBkEYaiAEQdAAaikDADcDACAGQSBqIARB2ABqLQAAOgAAIAZBqARqQShqIAZBCWopAAA3AwAgBkGoBGpBMGogBkERaikAADcDACAGQagEakE4aiAGQRlqKQAANwMAIAYgBCkDODcDACAGIAYpAAE3A8gEIAYgBTYCxAQgBiAONwK8BCAGIA03A6gEIAYgBkHAAmpBxAAQvJGAgAAiBSAMPgJEIAVB4ANqIAVBqARqIAUQ44SAgAACQCAFKALoAyIJRQ0AAkAgBSgC7AMiBUUNACAJIAVBKGxBCBC3hYCAAAsgAEE5OgAADAMLIAVB4ANqQRBqKQMAIQwgBSgC7AMhCSAFIAVB4ANqQRhqKQMANwMQIAUgDDcDCCAFIAk2AgQgBUHiADoAACAAIAUQuYeAgAAMAgsgBiAFQfAAELyRgIAAIghB8ABqQTBqIAVBMGopAgA3AwAgCEHwAGpBKGogBUEoaikCADcDACAIQfAAakEgaiAFQSBqKQIANwMAIAhB8ABqQRhqIg8gBUEYaikCADcDACAIQfAAakEQaiAFQRBqKQIANwMAIAhB8ABqQQhqIAVBCGopAgA3AwAgCCAFKQIANwNwIAhBqAFqQTBqIAhB6ABqKQMANwMAIAhBqAFqQShqIAhB4ABqKQMANwMAIAhBqAFqQSBqIAhB2ABqKQMANwMAIAhBqAFqQRhqIhAgCEHQAGopAwA3AwAgCEGoAWpBEGogCEHIAGopAwA3AwAgCEGoAWpBCGogCEHAAGopAwA3AwAgCCAIKQM4NwOoAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIA8gEEEgELqRgIAARQ0AIAhB4AFqIAgoAnwiESARIAhBhAFqKAIAIhJB8ABsaiITEJSEgIAAIBJFDQQgEUHwAGohFCARIQoCQCASQQFGDQAgESgCACEJAkACQCASQfAAbEGgfmoiFUHwAG5BAWpBA3EiBQ0AIBEhCiAUIQUMAQsgBUHwAGwhCyARIQogFCEFA0AgCSAFKAIAIgcgCSAHSyIHGyEJIAogBSAHGyEKIAVB8ABqIQUgC0GQf2oiCw0ACwsgFUHQAkkNAANAIAkgBSgCACILIAkgC0siCxsiCSAFQfAAaiIHKAIAIhUgCSAVSyIVGyIJIAVB4AFqIhYoAgAiFyAJIBdLIhcbIgkgBUHQAmoiGCgCACIZIAkgGUsiGRshCSAKIAUgCxsgByAVGyAWIBcbIBggGRshCiAFQcADaiIFIBNHDQALCyAIQfABaiAIKAK0ASIaIBogCEG8AWooAgAiG0HwAGxqIhwQlISAgAAgG0UNBSAaQfAAaiEdIBohCyAbQQFGDQMgGigCACEJIBtB8ABsQaB+aiIWQfAAbkEBakEDcSIFDQEgGiELIB0hBQwCC0EqQQEQtoWAgAAiBUUNByAFQShqQQAvAMj+wIAAOwAAIAVBIGpBACkAwP7AgAA3AAAgBUEYakEAKQC4/sCAADcAACAFQRBqQQApALD+wIAANwAAIAVBCGpBACkAqP7AgAA3AAAgBUEAKQCg/sCAADcAACAIQqqAgICgBTcDgAUgCCAFNgL8BCAIQeQAOgD4BCAAIAhB+ARqELmHgIAADBELIAVB8ABsIQcgGiELIB0hBQNAIAkgBSgCACIVIAkgFUsiFRshCSALIAUgFRshCyAFQfAAaiEFIAdBkH9qIgcNAAsLIBZB0AJJDQADQCAJIAUoAgAiByAJIAdLIgcbIgkgBUHwAGoiFSgCACIWIAkgFksiFhsiCSAFQeABaiIXKAIAIhggCSAYSyIYGyIJIAVB0AJqIhkoAgAiHiAJIB5LIh4bIQkgCyAFIAcbIBUgFhsgFyAYGyAZIB4bIQsgBUHAA2oiBSAcRw0ACwsgCEHAAmogChDHgYCAACAIQcACaiAPQSAQupGAgAANAiAIQfgEaiALEMeBgIAAIAhB+ARqIBBBIBC6kYCAAA0CAkAgEkEBRg0AIBEoAgAhBQJAIBJB8ABsQaB+aiIVQfAAbkEBakEDcSIJRQ0AIAlB8ABsIQcgBSEJA0AgFCARIAkgFCgCACIFSxshESAUQfAAaiEUIAkgBSAJIAVJGyIFIQkgB0GQf2oiBw0ACwsgFUHQAkkNAANAIBRB0AJqIgcgFEHgAWoiFSAUQfAAaiIWIBQgESAFIBQoAgAiCUsbIAUgCSAFIAlJGyIFIBYoAgAiCUsbIAUgCSAFIAlJGyIFIBUoAgAiCUsbIAUgCSAFIAlJGyIFIAcoAgAiCUsbIREgBSAJIAUgCUkbIQUgFEHAA2oiFCATRw0ACwsgCEHAAmogERDHgYCAACAIQfgEaiAKEMeBgIAAIAhBqARqIAhB4AFqIAhBwAJqIAhB+ARqEOCEgIAAIAgoAqgEIgVFDQgCQCAIKAKsBCIJRQ0AIAUgCUEFdEEBELeFgIAACwJAIBtBAUYNACAaKAIAIQUCQCAbQfAAbEGgfmoiB0HwAG5BAWpBA3EiCUUNACAJQfAAbCEKIAUhCQNAIB0gGiAJIB0oAgAiBUsbIRogHUHwAGohHSAJIAUgCSAFSRsiBSEJIApBkH9qIgoNAAsLIAdB0AJJDQADQCAdQdACaiIKIB1B4AFqIgcgHUHwAGoiFSAdIBogBSAdKAIAIglLGyAFIAkgBSAJSRsiBSAVKAIAIglLGyAFIAkgBSAJSRsiBSAHKAIAIglLGyAFIAkgBSAJSRsiBSAKKAIAIglLGyEaIAUgCSAFIAlJGyEFIB1BwANqIh0gHEcNAAsLIAhBwAJqIBoQx4GAgAAgCEH4BGogCxDHgYCAACAIQagEaiAIQfABaiAIQcACaiAIQfgEahDghICAACAIKAKoBCIFRQ0JAkAgCCgCrAQiCUUNACAFIAlBBXRBARC3hYCAAAsgCEGAAmpBGGogEUEoaikAADcDACAIQYACakEQaiARQSBqKQAANwMAIAhBgAJqQQhqIBFBGGopAAA3AwAgCCARKQAQNwOAAiAIQaACakEYaiAaQShqKQAANwMAIAhBoAJqQRBqIBpBIGopAAA3AwAgCEGgAmpBCGogGkEYaikAADcDACAIIBopABA3A6ACIAhBgAJqIAhBoAJqQSAQupGAgABFDQMgCEHAAmpBBHJB+P7AgABBMRCxgoCAACAIQeQAOgDAAiAIQfgEaiAIQcACakHYABC8kYCAABogACAIQfgEahC5h4CAAAwMC0EfQQEQtoWAgAAiBUUNBCAFQRdqQQApANuAwYAANwAAIAVBEGpBACkA1IDBgAA3AAAgBUEIakEAKQDMgMGAADcAACAFQQApAMSAwYAANwAAIAhCn4CAgPADNwOABSAIIAU2AvwEIAhB5AA6APgEIAAgCEH4BGoQuYeAgAAMDAtBH0EBELaFgIAAIgVFDQQgBUEXakEAKQDbgMGAADcAACAFQRBqQQApANSAwYAANwAAIAVBCGpBACkAzIDBgAA3AAAgBUEAKQDEgMGAADcAACAIQp+AgIDwAzcDgAUgCCAFNgL8BCAIQeQAOgD4BCAAIAhB+ARqELmHgIAADAoLQS5BARC2hYCAACIFRQ0EIAVBJmpBACkA8P7AgAA3AAAgBUEgakEAKQDq/sCAADcAACAFQRhqQQApAOL+wIAANwAAIAVBEGpBACkA2v7AgAA3AAAgBUEIakEAKQDS/sCAADcAACAFQQApAMr+wIAANwAAIAhCroCAgOAFNwOABSAIIAU2AvwEIAhB5AA6APgEIAAgCEH4BGoQuYeAgAAMCQsgCCAIKAJ4NgLkAyAIIAgoAnA2AuADIAhBqARqIAhB4ANqEOSEgIAAIAhB+ARqIAhBqARqEJqEgIAAIAgtAPgEIgVB5QBHDQYgCEGYA2ogCEHHAmogCEGABWoiBUHIABC8kYCAACIJQcgAELyRgIAAGiAIIAgoArABNgL0BCAIIAgoAqgBNgLwBCAIQagEaiAIQfAEahDkhICAACAIQfgEaiAIQagEahCbhICAAAJAAkACQAJAIAgtAPgEIgpB5QBHDQAgCEHgA2ogCSAFQcgAELyRgIAAQcgAELyRgIAAGiAPIAhBmANqQRhqQSAQupGAgAANASAQIAhB4ANqQRhqQSAQupGAgAANASAIQfgEaiAIQZgDaiAEKQMYIARBLGoiBRDnhICAACAIKAL4BCEJIAhB+ARqEJyEgIAAIAhB+ARqIAhB4ANqIAQpAxggBRDnhICAACAIKAL4BCEKIAhB+ARqEJyEgIAAAkAgCUECRw0AIApBAkYNBAsgCEGoBGpB+//AgABBFRC5goCAACAIQYMFaiAIQbAEaigCADYAACAIIAgpA6gENwD7BCAIIAgpAPgENwPAAiAIIAhB/wRqKQAANwDHAiAIQeQAOgD4BCAIQfgEakEBciAIQcACakHXABC8kYCAABogACAIQfgEahC5h4CAAAwCCyAIQcACaiAIQfgEakEBciIFQc8AELyRgIAAGiAIKQPIBSEMIAggCjoA+AQgBSAIQcACakHPABC8kYCAABogCCAMNwPIBSAAIAhB+ARqELmHgIAADAoLIAhBqARqQan/wIAAQdIAELmCgIAAIAhBgwVqIAhBsARqKAIANgAAIAggCCkDqAQ3APsEIAggCCkA+AQ3A8ACIAggCEH/BGopAAA3AMcCIAhB5AA6APgEIAhB+ARqQQFyIAhBwAJqQdcAELyRgIAAGiAAIAhB+ARqELmHgIAACyAIQeADahCdhICAAAwICyAIQeADahCdhICAACAIQZgDahCdhICAACAIQfABahCXhICAACAIQeABahCXhICAACAIQagBahCehICAACAIQfAAahCehICAACAAQTk6AAAgBEEwaigCACIJRQ0MIAUoAgAgCUEobEEIELeFgIAADAwLQSpBARCokICAAAALQR9BARCokICAAAALQR9BARCokICAAAALQS5BARCokICAAAALIAhB+ARqQeOAwYAAQREQuYKAgAAgCCkD+AQhDCAIIAgoAoAFNgKEBSAIIAw3AvwEIAhB5AA6APgEIAAgCEH4BGoQuYeAgAAMAwsgCEH4BGpB44DBgABBERC5goCAACAIKQP4BCEMIAggCCgCgAU2AoQFIAggDDcC/AQgCEHkADoA+AQgACAIQfgEahC5h4CAAAwCCyAIQcACaiAIQfgEakEBciIJQc8AELyRgIAAGiAIKQPIBSEMIAggBToA+AQgCSAIQcACakHPABC8kYCAABogCCAMNwPIBSAAIAhB+ARqELmHgIAADAELIAhBmANqEJ2EgIAACyAIQfABahCXhICAAAsgCEHgAWoQl4SAgAALAkAgCCgCrAEiBUUNACAIKAKoASAFQQEQt4WAgAALIAgoArQBIRYCQCAIQagBakEUaigCACIFRQ0AIBYgBUHwAGxqIRUgFiEHA0ACQCAHQQxqKAIAIglFDQAgBygCBCEFIAlBFGwhCgNAAkACQAJAAkAgBS0AAA4EAAAAAQMLIAVBCGohCQwBCyAFQQRqIQkLIAlBBGooAgAiC0UNACAJKAIAIAtBARC3hYCAAAsgBUEUaiEFIApBbGoiCg0ACwsgB0HwAGohBQJAIAdBCGooAgAiCUUNACAHKAIEIAlBFGxBBBC3hYCAAAsgBSEHIAUgFUcNAAsLAkAgCEG4AWooAgAiBUUNACAWIAVB8ABsQQQQt4WAgAALAkAgCCgCdCIFRQ0AIAgoAnAgBUEBELeFgIAACyAIKAJ8IRYCQCAIQfAAakEUaigCACIFRQ0AIBYgBUHwAGxqIRUgFiEHA0ACQCAHQQxqKAIAIglFDQAgBygCBCEFIAlBFGwhCgNAAkACQAJAAkAgBS0AAA4EAAAAAQMLIAVBCGohCQwBCyAFQQRqIQkLIAlBBGooAgAiC0UNACAJKAIAIAtBARC3hYCAAAsgBUEUaiEFIApBbGoiCg0ACwsgB0HwAGohBQJAIAdBCGooAgAiCUUNACAHKAIEIAlBFGxBBBC3hYCAAAsgBSEHIAUgFUcNAAsLIAhBgAFqKAIAIgVFDQAgFiAFQfAAbEEEELeFgIAACyAEQTBqKAIAIgVFDQAgBCgCLCAFQShsQQgQt4WAgAALAkAgA0EEaigCACIFRQ0AIAMoAgAgBUEBELeFgIAACyAGQdAFaiSAgICAAAunAgEDfyOAgICAAEEQayICJICAgIAAAkACQAJAIAEoAgxFDQAgAEEIaiABQcgAELyRgIAAGiAAQeUAOgAADAELIAJBCGogAUEYaikCADcDACACIAEpAhA3AwBBJEEBELaFgIAAIgFFDQEgAUEgakEAKAC5gcGAADYAACABQRhqQQApALGBwYAANwAAIAFBEGpBACkAqYHBgAA3AAAgAUEIakEAKQChgcGAADcAACABQQApAJmBwYAANwAAAkAgAigCAEUNACACELyEgIAACwJAIAIoAgQiA0UNACACQQhqKAIAIgRFDQAgAyAEQQEQt4WAgAALIABCpICAgMAENwAIIAAgATYABCAAQeQAOgAACyACQRBqJICAgIAADwtBJEEBEKiQgIAAAAunAgEDfyOAgICAAEEQayICJICAgIAAAkACQAJAIAEoAgxFDQAgAEEIaiABQcgAELyRgIAAGiAAQeUAOgAADAELIAJBCGogAUEYaikCADcDACACIAEpAhA3AwBBJUEBELaFgIAAIgFFDQEgAUEdakEAKQCRgcGAADcAACABQRhqQQApAIyBwYAANwAAIAFBEGpBACkAhIHBgAA3AAAgAUEIakEAKQD8gMGAADcAACABQQApAPSAwYAANwAAAkAgAigCAEUNACACELyEgIAACwJAIAIoAgQiA0UNACACQQhqKAIAIgRFDQAgAyAEQQEQt4WAgAALIABCpYCAgNAENwAIIAAgATYABCAAQeQAOgAACyACQRBqJICAgIAADwtBJUEBEKiQgIAAAAtiAQF/AkACQAJAIAAoAgAOAwABAgELIABBBGoQ4Y2AgAAMAQsCQCAAKAIERQ0AIABBBGoQvISAgAALIABBCGooAgAiAUUNACAAQQxqKAIAIgBFDQAgASAAQQEQt4WAgAAPCwubAgEGfwJAIABBEGooAgAiAUUNACAAQQxqKAIAIAFBhAFsQQQQt4WAgAALAkAg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dGpBkAJqKAIAIQFBACEFIAJBf2oiBkUNACACQX5qIQcCQCAGQQdxIgJFDQADQCAGQX9qIQYgASgCkAIhASACQX9qIgINAAsLAkAgB0EHSQ0AA0AgASgCkAIoApACKAKQAigCkAIoApACKAKQAigCkAIoApACIQEgBkF4aiIGDQALCyAARQ0GCwJAIAAgBEEMbGoiAEEIaigCACICRQ0AIABBBGooAgAgAkEBELeFgIAACwJAIABBiAFqIgAoAgAiAkUNACAAQQRqKAIAIgBFDQAgAiAAQQEQt4WAgAALQQAhAkEAIQAgAw0CDAQLAkAgACgCACIBRQ0AIAJBAWohBiAAQYwCai8BACEECwJAQcACQZACIAIbIgJFDQAgACACQQQQt4WAgAALIAEhACAGIQIgAQ0ACwtB3IjAgABBK0HoicCAABC7kICAAAALIAJFDQAgAkF/aiEEAkAgAkEHcSIARQ0AA0AgAkF/aiECIAEoApACIQEgAEF/aiIADQALCyAEQQdJDQADQCABKAKQAigCkAIoApACKAKQAigCkAIoApACKAKQAigCkAIhASACQXhqIgINAAsLQQAhAANAIAEoAgAhAgJAQcACQZACIAAbIgRFDQAgASAEQQQQt4WAgAALIABBf2ohACACIQEgAg0ACwsLhQEBAX8CQEEmQQEQtoWAgAAiAQ0AQSZBARCokICAAAALIAAgATYCACAAQqaAgIDgBDcCBCABQQApAI+CwYAANwAAIAFBCGpBACkAl4LBgAA3AAAgAUEQakEAKQCfgsGAADcAACABQRhqQQApAKeCwYAANwAAIAFBHmpBACkArYLBgAA3AAALtgUBB38CQCAAKAIEIgFFDQAgACgCACECAkACQCAAKAIIIgNFDQBBASEAA0ACQAJAIABBAXENACAFIQQgASEADAELQQAhBAJAIAJFDQAgAkF/aiEGAkAgAkEHcSIARQ0AA0AgAkF/aiECIAEoAowBIQEgAEF/aiIADQALCyAGQQdJDQADQCABKAKMASgCjAEoAowBKAKMASgCjAEoAowBKAKMASgCjAEhASACQXhqIgINAAsLIAEhAEEAIQILIANBf2ohAwNAAkAgBCAALwGKAU8NACAEQQFqIQUCQAJAIAINACAAIQEMAQsgACAFQQJ0akGMAWooAgAhAUEAIQUgAkF/aiIGRQ0AIAJBfmohBwJAIAZBB3EiAkUNAANAIAZBf2ohBiABKAKMASEBIAJBf2oiAg0ACwsCQCAHQQdJDQADQCABKAKMASgCjAEoAowBKAKMASgCjAEoAowBKAKMASgCjAEhASAGQXhqIgYNAAsLIABFDQYLAkAgACAEQQxsaiIAQQhqKAIAIgJFDQAgAEEEaigCACACQQEQt4WAgAALQQAhAkEAIQAgAw0CDAQLAkAgACgCACIBRQ0AIAJBAWohBiAAQYgBai8BACEECwJAQbwBQYwBIAIbIgJFDQAgACACQQQQt4WAgAALIAEhACAGIQIgAQ0ACwtB3IjAgABBK0HoicCAABC7kICAAAALIAJFDQAgAkF/aiEEAkAgAkEHcSIARQ0AA0AgAkF/aiECIAEoAowBIQEgAEF/aiIADQALCyAEQQdJDQADQCABKAKMASgCjAEoAowBKAKMASgCjAEoAowBKAKMASgCjAEhASACQXhqIgINAAsLQQAhAANAIAEoAgAhAgJAQbwBQYwBIAAbIgRFDQAgASAEQQQQt4WAgAALIABBf2ohACACIQEgAg0ACwsLJAEBfwJAQQhBBBC2hYCAACIARQ0AIAAPC0EIQQQQqJCAgAAAC8ICAQF/I4CAgIAAQfAAayICJICAgIAAAkACQCABKAIAQQRHDQAgAEHlADoAACAAIAEpAgQ3AgQgAEEMaiABQQxqKAIANgIADAELIAJBGGpBIGogAUEgaikCADcDACACQRhqQRhqIAFBGGopAgA3AwAgAkEYakEQaiABQRBqKQIANwMAIAJBGGpBCGogAUEIaikCADcDACACIAEpAgA3AxggAkGNgYCAADYCVCACIAJBGGo2AlAgAkEBNgJsIAJCATcCXCACQdSDwYAANgJYIAIgAkHQAGo2AmggAkHAAGogAkHYAGoQrZCAgAAgAkEUaiACQcAAakEIaigCADYAACACIAIpA0A3AAwgAkEYahCphICAACAAQeQAOgAAIAAgAikACTcAASAAQQhqIAJBEGopAAA3AAALIAJB8ABqJICAgIAAC4sBAgJ/BX4gAS0AOCECIAEoAiAhAyAAQTlqIAFBOWoQw46AgAAgAUEQaikDACEEIAEpAxghBSABKQMAIQYgASkDCCEHIAEpAiQhCCAAQSxqIAFBLGoQgIOAgAAgACADNgIgIAAgAjoAOCAAIAg3AiQgACAENwMQIAAgBzcDCCAAIAY3AwAgACAFNwMYC6MDAQF/I4CAgIAAQcAAayICJICAgIAAAkACQAJAAkACQCAAKAIADgQAAQIDAAsgAiAAQQRqNgIMIAJBPGpBATYCACACQgE3AiwgAkHYi8GAADYCKCACQbCAgIAANgIUIAIgAkEQajYCOCACIAJBDGo2AhAgASACQShqEPKQgIAAIQAMAwsgAiAAQQRqNgIEIAIgAEEQajYCCCACIABBHGo2AgwgAkEQakEUakEDNgIAIAJBKGpBFGpBr4CAgAA2AgAgAkE0akGvgICAADYCACACQgM3AhQgAkG0i8GAADYCECACQa6AgIAANgIsIAIgAkEoajYCICACIAJBDGo2AjggAiACQQhqNgIwIAIgAkEEajYCKCABIAJBEGoQ8pCAgAAhAAwCCyACQTxqQQA2AgAgAkHs+sCAADYCOCACQgE3AiwgAkGEi8GAADYCKCABIAJBKGoQ8pCAgAAhAAwBCyACQTxqQQA2AgAgAkHs+sCAADYCOCACQgE3AiwgAkHYisGAADYCKCABIAJBKGoQ8pCAgAAhAAsgAkHAAGokgICAgAAgAAuEAgECfwJAAkACQCAAKAIADgIAAQILAkACQAJAAkAgACgCBCIBLQAAIgJBfGpBAyACQQNLGw4EAwMBAgALIAFBCGooAgAiAkUNAiABKAIEIAJBARC3hYCAAAwCCyABQQhqKAIAIgJFDQEgASgCBCACQQEQt4WAgAAMAQsgARC6hICAAAsgACgCBEE0QQQQt4WAgAAPCwJAIAAoAgQiAkUNACAAQQhqKAIAIgFFDQAgAiABQQEQt4WAgAALAkAgACgCECICRQ0AIABBFGooAgAiAUUNACACIAFBARC3hYCAAAsgACgCHCICRQ0AIABBIGooAgAiAEUNACACIABBARC3hYCAAAsLkAgGB38BfgR/An4HfwF+I4CAgIAAQfAAayIDJICAgIAAIANCADcCDAJAAkACQAJAIAEgAkYNACADQcAAakEgaiEEIANBwABqQRBqIQUgA0HMAGohBiABQShqIQcgA0EYakEQaiEIIANBGGpBCGohCUIAIQoDQCAHIQsgASgCCCEMIAEoAgQhDSABKAIAIQ4gCCABQRxqKAIANgIAIAkgAUEUaikCADcDACADIAEpAgw3AxgCQCAB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AiADQQEQt4WAgAALAkAgAUEQaigCACICRQ0AIAEoAgwgAkEEdEEEELeFgIAACyAAKAIEQRhBBBC3hYCAAA8LIABBCGohAQJAIAAoAgQNACABEOGNgIAADwsCQCABKAIARQ0AIAEQvISAgAALIABBDGooAgAiAUUNASAAQRBqKAIAIgBFDQEgASAAQQEQt4WAgAAPCyAAQQRqEOGNgIAACwvXCgIDfwF+I4CAgIAAQcAAayICJICAgIAAIAJBADoAFyACQShqIAEgAkEXakEBENKOgIAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKAIoDQAgAi0AF0F/ag4FAQIDBAYFCyACQQpqIAJBKGpBDGopAgA3AQAgAiACKQIsNwECQRBBBBC2hYCAACIBRQ0HIAEgAkECaiIDKQEANwEAIAFBCGogA0EIaikBADcBACAAQRBqQTw2AgAgAEEMakHUh8GAADYCACAAQQhqQQA2AgAgACABNgIEIABBBTYCAAwGCyACQShqIAEQr4SAgAACQCACKAIoDQAgACACKQIsNwIEIABBDGogAkEoakEMaikCADcCACAAQQA2AgAMBgtBEEEEELaFgIAAIgFFDQcgASACKQIsNwIAIAAgATYCBCAAQQU2AgAgAEEQakEyNgIAIABBDGpBkIXBgAA2AgAgAEEIakEANgIAIAFBCGogAkEoakEMaikCADcCAAwFCyACQQA2AhggAkEoaiABIAJBGGpBBBDSjoCAAAJAAkAgAigCKA0AIAIoAhghAyACQShqIAEQr4SAgAAgAigCKA0BIAAgAikCLDcCCCAAQRBqIAJBNGopAgA3AgAgACADNgIEIABBATYCAAwGCyACQQhqIgMgAkEoakEQaigCADYCACACIAJBKGpBCGopAwA3AwAgAigCLCEEQRBBBBC2hYCAACIBRQ0IIAEgBDYCACABIAIpAwA3AgQgACABNgIEIABBBTYCACAAQRBqQS82AgAgAEEMakHChcGAADYCACAAQQhqQQA2AgAgAUEMaiADKAIANgIADAULIAJBCGogAkE0aikCADcDACACIAIpAiw3AwAgAEEEaiACQfGFwYAAQS8Q/IGAgAAgAEEFNgIADAQLIAJCADcDACACQShqIAEgAkEIENKOgIAAAkAgAigCKA0AIAAgAikDADcDCCAAQQI2AgAMBAsgAkEoakEQaigCACEDIAJBKGpBCGopAwAhBSACKAIsIQRBEEEEELaFgIAAIgFFDQcgASADNgIMIAEgBTcCBCABIAQ2AgAgACABNgIEIABBBTYCACAAQRBqQS02AgAgAEEMakGghsGAADYCACAAQQhqQQA2AgAMAwsgAkEANgIYIAJBKGogASACQRhqQQQQ0o6AgAACQCACKAIoDQAgACACKAIYNgIEIABBAzYCAAwDCyACQQhqIgMgAkEoakEQaigCADYCACACIAJBKGpBCGopAwA3AwAgAigCLCEEQRBBBBC2hYCAACIBRQ0HIAEgBDYCACABIAIpAwA3AgQgACABNgIEIABBBTYCACAAQRBqQSg2AgAgAEEMakHNhsGAADYCACAAQQhqQQA2AgAgAUEMaiADKAIANgIADAILIABBBGpBnofBgABBNhDbjoCAACAAQQU2AgAMAQsgAkEANgIYIAJBKGogASACQRhqQQQQ0o6AgAACQCACKAIoDQAgACACKAIYNgIEIABBBDYCAAwBCyACQQhqIgMgAkEoakEQaigCADYCACACIAJBKGpBCGopAwA3AwAgAigCLCEEQRBBBBC2hYCAACIBRQ0GIAEgBDYCACABIAIpAwA3AgQgACABNgIEIABBBTYCACAAQRBqQSk2AgAgAEEMakH1hsGAADYCACAAQQhqQQA2AgAgAUEMaiADKAIANgIACyACQcAAaiSAgICAAA8LQRBBBBCokICAAAALQRBBBBCokICAAAALQRBBBBCokICAAAALQRBBBBCokICAAAALQRBBBBCokICAAAALQRBBBBCokICAAAALgAQBBX8jgICAgABBMGsiAiSAgICAACACQRhqIAEQxIGAgAACQAJAAkACQCACKAIYRQ0AIAJBDGogAkEYakEMaikCADcCACACIAIpAhw3AgQgAkEBNgIADAELIAIgASACKAIcEPKCgIAAIAIoAgANACACQQxqKAIAIQMgAkEIaiIEKAIAIQUgAigCBCEGIAJBADYCFCACQRhqIAEgAkEUakEEENKOgIAAAkAgAigCGA0AIABBEGogAigCFDYCACAAQQxqIAM2AgAgAEEIaiAFNgIAIAAgBjYCBCAAQQA2AgAMAgsgBCACQRhqQRBqKAIANgIAIAIgAkEYakEIaikDADcDACACKAIcIQQCQEEQQQQQtoWAgAAiAUUNACABIAQ2AgAgASACKQMANwIEIAAgATYCBCAAQQE2AgAgAEEQakEpNgIAIABBDGpBxIjBgAA2AgAgAEEIakEANgIAIAFBDGogAkEIaigCADYCACAFRQ0CIAYgBUEobEEIELeFgIAADAILQRBBBBCokICAAAALQRBBBBC2hYCAACIBRQ0BIAEgAikCBDcCACAAIAE2AgQgAEEBNgIAIABBEGpBNDYCACAAQQxqQZCIwYAANgIAIABBCGpBADYCACABQQhqIAJBDGopAgA3AgALIAJBMGokgICAgAAPC0EQQQQQqJCAgAAACxwAIAAoAgAiACgCACAAQQhqKAIAIAEQgpGAgAALDwAgACgCACABELaKgIAACw8AIAAoAgAgARC0ioCAAAsPACAAKAIAIAEQtYqAgAALDwAgACgCACABELSKgIAACw8AIAAoAgAgARCukICAAAscACAAKAIAIgAoAgAgAEEIaigCACABEIWRgIAACw8AIAAoAgAgARC0ioCAAAsPACAAKAIAIAEQ44yAgAALcQEBfyOAgICAAEEgayICJICAgIAAIAIgADYCBCACQQhqQRBqIAFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQfCIwYAAIAJBCGoQwpCAgAAhASACQSBqJICAgIAAIAEL9AEBAn8CQAJAAkACQCAALQAADgMDAQIACwJAAkACQAJAIAAoAgQiAS0AACICQXxqQQMgAkEDSxsOBAMDAQIACyABQQhqKAIAIgJFDQIgASgCBCACQQEQt4WAgAAMAgsgAUEIaigCACICRQ0BIAEoAgQgAkEBELeFgIAADAELIAEQuoSAgAALIAAoAgRBNEEEELeFgIAADAILAkAgACgCBEUNACAAQQRqELyEgIAACyAAQQhqKAIAIgJFDQEgAEEMaigCACIARQ0BIAIgAEEBELeFgIAADwsgAEEIaigCACICRQ0AIAAoAgQgAkEBELeFgIAADwsLAgALUQECfwJAIAAoAgAiASgCAEUNACABELyEgIAACwJAIAEoAgQiAkUNACABQQhqKAIAIgFFDQAgAiABQQEQt4WAgAALIAAoAgBBEEEEELeFgIAACyYBAX8CQCAAQTBqKAIAIgFFDQAgACgCLCABQShsQQgQt4WAgAALC60D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ASgCAA0AIAEoAgQhAyABQQhqKAIAIgENAUEBIQQMAgsgAUEIaigCACEDIAEoAgQhASACQRhqIgRCADcDACACQRBqIgVCADcDACACQQhqIgZCADcDACACQgA3AwACQCADQSBLDQAgAiABIAMQvJGAgAAhASAAIAM2AiQgAEEBOgAAIABBGWogBCkDADcAACAAQRFqIAUpAwA3AAAgAEEJaiAGKQMANwAAIAAgASkDADcAAQwHCyADQX9KIgRFDQIgAyAEELaFgIAAIgVFDQMgBSABIAMQvJGAgAAhASAAQQxqIAM2AgAgAEEIaiADNgIAIAAgATYCBCAAQQI6AAAMBgsgAUEgRg0EIAFBf0oiBUUNASABIAUQtoWAgAAiBEUNAwsgBCADIAEQvJGAgAAhAyAAQQxqIAE2AgAgAEEIaiABNgIAIAAgAzYCBCAAQQI6AAAMBAsQqZCAgAAACyADIAQQqJCAgAAACyABIAUQqJCAgAAACyAAQQA6AAAgACADKQAANwABIABBGWogA0EYaikAADcAACAAQRFqIANBEGopAAA3AAAgAEEJaiADQQhqKQAANwAACyACQSBqJICAgIAAC6cCAQN/I4CAgIAAQcAAayIEJICAgIAAAkACQAJAAkACQCACDQBBASEFDAELIAJBf0oiBkUNASACIAYQtoWAgAAiBUUNAgsgBSABIAIQvJGAgAAhASAEQQA2AgggBEIBNwMAIARBEGogBEHMm8GAABDskICAACADIARBEGoQ9IaAgAANAiAAQQxqIAI2AgAgAEEIaiACNgIAIAAgATYCBCAAIAQpAwA3AhAgAEEJNgIAIABBGGogBEEIaigCADYCAAJAIAMoAgAiAEUNACADQQRqKAIAIgJFDQAgACACQQEQt4WAgAALIARBwABqJICAgIAADwsQqZCAgAAACyACIAYQqJCAgAAAC0Hkm8GAAEE3IARBOGpBnJzBgABB+JzBgAAQ2pCAgAAAC6oCAQN/I4CAgIAAQcAAayIEJICAgIAAAkACQAJAAkACQCACDQBBASEFDAELIAJBf0oiBkUNASACIAYQtoWAgAAiBUUNAgsgBSABIAIQvJGAgAAhASAEQQA2AgggBEIBNwMAIARBEGogBEHMm8GAABDskICAACADIARBEGoQkIeAgAANAiAAQQxqIAI2AgAgAEEIaiACNgIA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AEEMaiADQRBqQQxqKAIANgIADAcLIANBEGogA0EIakH1jMGAAEEFIAFBHGoQxICAgAACQCADKAIQRQ0AIAAgAykCFDcCBCAAQQE2AgAgAEEMaiADQRBqQQxqKAIANgIADAcLIANBEGogA0EIakH6jMGAAEEFIAFBKGoQw4CAgAAgAygCEEUNAyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAwGCyADQRBqIAJBnozBgABBB0EAQf+MwYAAQQdBAxD+hoCAAAJAIAMoAhBFDQAgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMBgsgAyADKAIUNgIIIAMgA0EYai0AADoADCADQRBqIANBCGpBsIzBgABBDSABQQRqEMOAgIAAAkAgAygCEEUNACAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAwGCyADQRBqIANBCGpB4IzBgABBAyABQRBqEMGAgIAAAkAgAygCEEUNACAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAwGCyADQRBqIANBCGpB9YzBgABBBSABQRxqEMSAgIAAIAMoAhBFDQEgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMBQsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMBAsgACADKAIIIAMtAAwQlIeAgAAMAwsgACADKAIIIAMtAAwQlIeAgAAMAgsgACADKAIIIAMtAAwQlIeAgAAMAQsgACADKAIIIAMtAAwQlIeAgAALIANBIGokgICAgAALqgIBAX8jgICAgABBIGsiAySAgICAACADQRBqIAJBjY3BgABBBUECEP2GgIAAAkACQAJAIAMoAhANACADIAMoAhQ2AgggAyADQRhqLQAAOgAMIANBEGogA0EIakGSjcGAAEEEIAEQw4CAgAAgAygCEA0BIANBEGogA0EIakGWjcGAAEEKIAFBDGoQx4CAgAACQCADKAIQDQAgACADKAIIIAMtAAwQk4eAgAAMAwsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMAgsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMAQsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgALIANBIGokgICAgAALqgIBAX8jgICAgABBIGsiAySAgICAACADQRBqIAJBoI3BgABBCUECEP2GgIAAAkACQAJAIAMoAhANACADIAMoAhQ2AgggAyADQRhqLQAAOgAMIANBEGogA0EIakGpjcGAAEEDIAEQw4CAgAAgAygCEA0BIANBEGogA0EIakGsjcGAAEEFIAFBDGoQw4CAgAACQCADKAIQDQAgACADKAIIIAMtAAwQk4eAgAAMAwsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMAgsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMAQsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgALIANBIGokgICAgAALqgIEBX8BfgJ/AX4gASgCDCECIAEoAhBFIQMgAUEcaiEEAkACQANAIAFBADYCEAJAAkAgA0EBcUUNACABKAIIIgUgAkYNAyABIAVBDGoiAzYCCCAFKAIAIgZFDQMgBSkCBCIHQiCIpyEFIAenIQgMAQsgASgCFCIGRQ0CIAQoAgAhBSABKAIIIQMgASgCGCEICwJAAkAgAyACRg0AIAEgA0EMajYCCCADKAIAIgkNAQsgASAKNwIYIAFCATcCEAwDCyABIAMpAgQiCjcCGCABIAk2AhQgAUEBNgIQIAUgCkIgiKdHDQIgBiAJIAUQupGAgAANAkEAIQMgCEUNACAGIAhBARC3hYCAAAwACwsgAEEANgIADwsgACAFNgIIIAAgCDYCBCAAIAY2AgALzAcBDX8jgICAgABBoAJrIgIkgICAgAAgASgCECEDIAEoAgwhBCABQQA2AhAgAUE8aiEFIAFBOGohBiABQRRqIQcgAkEoaiEIAkACQAJAAkACQCADDQAgASgCCCIDIARGDQMgASADQZABajYCCCACQZABakEIaiADQQhqKQIANwMAIAJBkAFqQRBqIANBEGopAgA3AwAgAkGQAWpBGGogA0EYaikCADcDACACQZABakEgaiADQSBqKAIANgIAIAIgAykCADcDkAEgA0EoaiEJIANBJGohCgwBC0EAIQMMAQtBASEDCwNAAkACQCADDgIAAQELIAJBkAFqQSBqIAdBIGooAgA2AgAgAkGQAWpBGGogB0EYaikCADcDACACQZABakEQaiAHQRBqKQIANwMAIAJBkAFqQQhqIAdBCGopAgA3AwAgAiAHKQIANwOQASAFIQkgBiEKQQEhAwwBCyAKKAIAIgtFDQEgAkEgaiACQZABakEgaigCADYCACACQRhqIAJBkAFqQRhqKQMANwMAIAJBEGogAkGQAWpBEGopAwA3AwAgAkEIaiACQZABakEIaikDADcDACACIAIpA5ABNwMAIAggCUHoABC8kYCAABogAiALNgIkQQAhDAJAIAEoAggiAyAERg0AIAEgA0GQAWo2AgggAkH4AWpBCGogA0EIaikCADcDACACQfgBakEQaiADQRBqKQIANwMAIAJB+AFqQRhqIANBGGopAgA3AwAgAkH4AWpBIGogA0EgaigCADYCACACIAMpAgA3A/gBIAMoAiQhDCACQZABaiADQShqQegAELyRgIAAGgsgByACKQP4ATcCACAHQSBqIAJB+AFqQSBqKAIANgIAIAdBGGogAkH4AWpBGGopAwA3AgAgB0EQaiACQfgBakEQaikDADcCACAHQQhqIAJB+AFqQQhqKQMANwIAIAUgAkGQAWpB6AAQvJGAgAAaIAEgDDYCOCABQQE2AhACQCAMDQAgACACQZABELyRgIAAGgwDCwJAIAIgB0EgELqRgIAADQACQCACKAIsIgNFDQAgA0EUbCENIAshAwNAAkACQAJAAkAgAy0AAA4EAAAAAQMLIANBCGohDAwBCyADQQRqIQwLIAxBBGooAgAiDkUNACAMKAIAIA5BARC3hYCAAAsgA0EUaiEDIA1BbGoiDQ0ACwsCQCACKAIoIgNFDQAgCyADQRRsQQQQt4WAgAALIAFBADYCEEEAIQMMAQsLIAAgAkGQARC8kYCAABoMAQsgAEEANgIkCyACQaACaiSAgICAAAv+DAECfyOAgICAAEGAAWsiAiSAgICAAAJAAkACQCABKAIARQ0AIAAgASkCADcCACAAQShqIAFBKGopAgA3AgAgAEEgaiABQSBqKQIANwIAIABBGGogAUEYaikCADcCACAAQRBqIAFBEGopAgA3AgAgAEEIaiABQQhqKQIANwIADAELIAJBIGogAUEoaikDADcDACACQRhqIAFBIGopAwA3AwAgAkEQaiABQRhqKQMANwMAIAJB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aigCADYCAAwECyAAQQA2AgAgBCgCBCIDRQ0DDAILQSBBARCokICAAAALIABBADYCAEEBIQMLIAUgA0EFdEEBELeFgIAACyAEQdAAaiSAgICAAAuRBgMGfwJ+BX8jgICAgABBsAJrIgMkgICAgAAgA0HgAGogASACEKaBgIAAAkACQAJAIAMoAoQBDQAgA0HAAWogAygCYBDmjICAAAwBCyADQcABakEgaiICIANB4ABqQSBqKQMANwMAIANBwAFqQTBqIgEgA0HgAGpBMGopAwA3AwAgA0HAAWpBKGogA0HgAGpBKGopAwA3AwAgA0HAAWpBGGoiBCADQeAAakEYaikDADcDACADQcABakEQaiIFIANB4ABqQRBqKQMANwMAIANBwAFqQQhqIgYgA0HgAGpBCGopAwA3AwAgAyADKQNgNwPAASADKALkASIHRQ0AIANBOGpBIGogAigCACIINgIAIANBOGpBGGogBCkDACIJNwMAIANBOGpBEGogBSkDACIKNwMAIANBCGoiCyABKQMANwMAIANBEGpBCGoiDCAGKQMANwMAIANBEGpBEGoiDSAKNwMAIANBEGpBGGoiDiAJNwMAIANBEGpBIGoiDyAINgIAIAMgAykD6AE3AwAgAyADKQPAATcDECACIA8oAgA2AgAgBCAOKQMANwMAIAUgDSkDADcDACAGIAwpAwA3AwAgAyAHNgLkASADIAMpAxA3A8ABIAEgCykDADcDACADIAMpAwA3A+gBIANB4ABqIANBwAFqEJaHgIAAAkAgAykDYEIAUg0AIAAgA0HoAGpB2AAQvJGAgAAaDAILIANBwAFqIANB6ABqQdgAELyRgIAAGiADQYOAgIAANgKsAiADIANBwAFqNgKoAiADQQE2AkwgA0IBNwI8IANB1IPBgAA2AjggAyADQagCajYCSCADQZgCaiADQThqEK2QgIAAIABBFGogA0GYAmoQ5IyAgAAgA0HAAWoQrYSAgAAgAEEANgIQDAELIANBOGpBEGogA0HAAWpBEGooAgAiAjYCACADQThqQQhqIANBwAFqQQhqKQMAIgk3AwAgAyADKQPAASIKNwM4IABBJGogAjYCACAAQRxqIAk3AgAgACAKNwIUIABBADYCEAsgA0GwAmokgICAgAALjwQEAX8BfgJ/AX4jgICAgABBkAJrIgMkgICAgAAgA0EYaiABIAIQpYGAgAACQAJAAkAgAygCGA0AIANBiAFqQQRyIAMoAhwQ5oyAgAAMAQsgA0GIAWpBEGogA0EYakEQaikDADcDACADQYgBakEIaiADQRhqQQhqKQMANwMAIAMgAykDGCIENwOIASAEpyICRQ0AIANBCGogA0GUAWoiASkCACIENwMAIANBEGogA0GcAWoiBSgCACIGNgIAIAMgAykCjAEiBzcDACABIAQ3AgAgBSAGNgIAIAMgAjYCiAEgAyAHNwKMASADQRhqIANBiAFqEJeHgIAAAkAgAygCGEUNACAAIANBGGpB8AAQvJGAgAAaDAILIANBiAFqIANBIGpB2AAQvJGAgAAaIANBg4CAgAA2AvQBIAMgA0GIAWo2AvABIANBATYCjAIgA0IBNwL8ASADQdSDwYAANgL4ASADIANB8AFqNgKIAiADQeABaiADQfgBahCtkICAACAAQQRqIANB4AFqEOSMgIAAIANBiAFqEK2EgIAAIABBADYCAAwBCyADQYgCaiADQYgBakEUaigCACICNgIAIANBgAJqIANBiAFqQQxqKQIAIgQ3AwAgAyADKQKMASIHNwP4ASAAQRRqIAI2AgAgAEEMaiAENwIAIAAgBzcCBCAAQQA2AgALIANBkAJqJICAgIAAC4Q5AxR/An4SfyOAgICAAEGwBWsiAySAgICAACADQRhqQTBqIAJBMGopAgA3AwAgA0EYakEoaiACQShqKQIANwMAIANBGGpBIGogAkEgaikCADcDACADQRhqQRhqIAJBGGopAgA3AwAgA0EYakEQaiACQRBqKQIANwMAIANBGGpBCGogAkEIaikCADcDACADIAIpAgA3AxggAkE8aigCACEEIAJBwABqKAIAIQUgAigCOCEGIAIoAkQhByADQdAAaiADKAIkIgggCCADQRhqQRRqKAIAIglB8ABsaiIKEJSEgIAAAkACQAJAAkACQAJAAkACQAJAAkAgCUUNACAIQfAAaiELIAghDAJAIAlBAUYNACAIKAIAIQ0CQAJAIAlB8ABsQaB+aiIOQfAAbkEBakEDcSICDQAgCCEMIAshAgwBCyACQfAAbCEPIAghDCALIQIDQCANIAIoAgAiECANIBBLIhAbIQ0gDCACIBAbIQwgAkHwAGohAiAPQZB/aiIPDQALCyAOQdACSQ0AA0AgDSACKAIAIg8gDSAPSyIPGyINIAJB8ABqIhAoAgAiDiANIA5LIg4bIg0gAkHgAWoiESgCACISIA0gEksiEhsiDSACQdACaiITKAIAIhQgDSAUSyIUGyENIAwgAiAPGyAQIA4bIBEgEhsgEyAUGyEMIAJBwANqIgIgCkcNAAsLIANB4ANqIAwQx4GAgAAgA0HgA2ogA0EwaiICQSAQupGAgAANAyADIAMoAiA2AuQBIAMgAygCGCIVNgLgASADQeADaiADQeABahDkhICAACADKALsAyINRQ0EIANB4ABqQQhqIANB4ANqQQhqKAIANgIAIANB8AJqQQhqIg8gA0HgA2pBGGopAwA3AwAgA0HgAGpBKGogA0HgA2pBKGopAwA3AwAgA0HgAGpBMGogA0HgA2pBMGopAwA3AwAgA0HgAGpBOGogA0HgA2pBOGopAwA3AwAgA0HgAGpBwABqIANB4ANqQcAAaikDADcDACADIAMpA+ADNwNgIAMgAykD8AM3A/ACIAMgAykDgAQ3A4ABIANB4ABqQRhqIhAgDykDADcDACADIA02AmwgAyADKQPwAjcDcCAQIAJBIBC6kYCAAA0CIAgoAgAhAgJAAkAgCUEBRw0AIAghDwwBCwJAAkAgCUHwAGxBoH5qIg5B8ABuQQFqQQNxIg0NACAIIQ8MAQsgDUHwAGwhECACIQ0gCCEPA0AgCyAPIA0gCygCACICSxshDyALQfAAaiELIA0gAiANIAJJGyICIQ0gEEGQf2oiEA0ACwsCQCAOQdACSQ0AA0AgC0HQAmoiECALQeABaiIOIAtB8ABqIhEgCyAPIAIgCygCACINSxsgAiANIAIgDUkbIgIgESgCACINSxsgAiANIAIgDUkbIgIgDigCACINSxsgAiANIAIgDUkbIgIgECgCACINSxshDyACIA0gAiANSRshAiALQcADaiILIApHDQALCyAPKAIAIQILIAFBIGohFiACIAEoAhRPDQYgA0HwAmogDxDHgYCAACADQeADakEYaiAWQRhqKQAANwMAIANB4ANqQRBqIBZBEGopAAA3AwAgA0HgA2pBCGogFkEIaikAADcDACADIBYpAAA3A+ADIANB4AFqIANB0ABqIANB8AJqIANB4ANqEOCEgIAAIAMoAuABIgJFDQEgAygC5AEiC0UNBiACIAtBBXRBARC3hYCAAAwGCyADQeADakEUakEANgIAIANB7I7BgAA2AvADIANCATcC5AMgA0HEksGAADYC4AMgA0HgA2oQ5YSAgAAhAgwECyADQfQDakEANgIAIANB7I7BgAA2AvADIANCATcC5AMgA0HokcGAADYC4AMgAEEQaiADQeADahDlhICAADYCACAAQgA3AwgCQCADKAJwIgJFDQAgAygCbCACQYQBbEEEELeFgIAACwJAIANBoAFqKAIAIgJFDQAgAygCmAEiECACQfAAbGohDgNAAkAgEEEMaigCACILRQ0AIBAoAgQhAiALQRRsIQ0DQAJAAkACQAJAIAItAAAOBAAAAAEDCyACQQhqIQsMAQsgAkEEaiELCyALQQRqKAIAIg9FDQAgCygCACAPQQEQt4WAgAALIAJBFGohAiANQWxqIg0NAAsLIBBB8ABqIQICQCAQQQhqKAIAIgtFDQAgECgCBCALQRRsQQQQt4WAgAALIAIhECACIA5HDQALCwJAIANBnAFqKAIAIgJFDQAgAygCmAEgAkHwAGxBBBC3hYCAAAsgA0HQAGoQl4SAgAAMBQsgA0H0A2pBADYCACADQeyOwYAANgLwAyADQgE3AuQDIANBrI/BgAA2AuADIABBEGogA0HgA2oQ5YSAgAA2AgAgAEIANwMIIANB4ABqEOaEgIAAIANB0ABqEJeEgIAADAQLIANB9ANqQQA2AgAgA0HsjsGAADYC8AMgA0IBNwLkAyADQeSOwYAANgLgAyADQeADahDlhICAACECDAELIANB+AJqIANB4ANqQRhqKQMAIhc3AwAgAyADKQPwAyIYNwPwAiAAQRhqIBc3AgAgAEEQaiAYNwIAIABCgICAgBA3AwggA0HQAGoQl4SAgAAMAgsgAEIANwMIIABBEGogAjYCACADQdAAahCXhICAAAwBCyADQfACakEYaiAWQRhqKQAANwMAIANB8AJqQRBqIBZBEGopAAA3AwAgA0HwAmpBCGogFkEIaikAADcDACADIBYpAAA3A/ACIANB4ANqIAwQx4GAgAAgA0HgAWogA0HQAGogA0HwAmogA0HgA2oQ4ISAgAACQCADKALgASIORQ0AIAMoAuQBIRkgDiADKALoASIaELSCgIAAIANB4ANqIANB4ABqIAEpAwAgAUEIaiIbEOeEgIAAAkACQCADKALgAyIcQQJHDQAgA0IENwOoASADQQA2ArABIAMgBUEAIAQbNgLYASADIAQ2AtABIAMgBjYCzAEgAyAERUEBdCICNgLIASADIAQ2AsABIAMgBjYCvAEgAyACNgK4ASADQeABaiADQbgBahCShICAAAJAIAMoAoACIh1FDQAgA0HwAmpBGGohHiADQfACakEIaiEfIANB8AJqQQRyISAgA0HgA2pBGGohISADQeADakEIaiEiIANBwANqISMDQCADQagCakEYaiADQeABakEYaikDADcDACADQagCakEQaiADQeABakEQaikDADcDACADQagCakEIaiADQeABakEIaikDADcDACADIAMpA+ABNwOoAiADKAKgAiESIAMoApwCIRMgAygCmAIhJCADKAKQAiEUIAMoAowCISUgAygCiAIhJiADKAKEAiEnAkACQAJAIBpFDQAgAygClAIhKEEAIQIgGiENIBohCwNAAkACQEF/IA4gDUEBdiACaiIPQQV0aiADQagCakEgELqRgIAAIg1BAEcgDUEASBsiDUEBRw0AIA8hCwwBCyANQf8BcUH/AUcNAyAPQQFqIQILIAsgAmshDSALIAJLDQALCwJAICZFDQAgJkEMbCELIB0hAgNAAkAgAkEEaigCACINRQ0AIAIoAgAgDUEBELeFgIAACyACQQxqIQIgC0F0aiILDQALCwJAICdFDQAgHSAnQQxsQQQQt4WAgAALAkAgFEUNACAlIBRBARC3hYCAAAsCQCASRQ0AIBJBDGwhCyAkIQIDQAJAIAJBBGooAgAiDUUNACACKAIAIA1BARC3hYCAAAsgAkEMaiECIAtBdGoiCw0ACwsgE0UNASAkIBNBDGxBBBC3hYCAAAwBCwJAAkAgAygCVCIRRQ0AIAMoAlAhKQNAIBFBRGohECARQdgJaiELIBEvAdYJIipBBXQhAkF/IQ8CQANAAkAgAg0AICohDwwCCyADQagCaiALQSAQupGAgAAhDSAPQQFqIQ8gEEHwAGohECACQWBqIQIgC0EgaiELQX8gDUEARyANQQBIGyINQQFGDQALIA1B/wFxRQ0DCyApRQ0BIClBf2ohKSARIA9BAnRqQbgMaigCACERDAALC0G0j8GAAEEvQaSQwYAAEMuQgIAAAAsgAyAmNgLoAyADICc2AuQDIAMgHTYC4AMgA0HIAmogA0HgA2oQ+YGAgAAgA0HYAmogASgCHBCNiICAACAiIANByAJqQQhqKAIANgIAIAMgAykDyAI3A+ADIANBEGogA0HYAmoQ7o2AgAAgAyADKQMQNwPoAiADQfACaiAQIANB4ANqIANB6AJqEIqBgIAAAkACQAJAAkACQCADKALwAkEERw0AIAMgAykD+AI3AowFIAMgAygC9AI2AogFIANBCGogA0HYAmoQ7o2AgAAgA0GYBWogA0GIBWogAygCCCADKAIMEKGEgIAAAkAgAygCmAVFDQAgAygCnAUiEEUNACADKAKkBSECIAMoAqAFIREgA0GIBWoQooSAgAAgAyACNgKcBSADIBA2ApgFIANB4ANqIANBmAVqEMqBgIAAAkACQAJAIAMoAuQDIgtFDQAgA0HgBGpBCGoiDSAiQQhqKQIANwMAIAMgIikCADcD4AQgAygC4AMhAiAeICFB2AAQvJGAgAAaIB9BCGogDSkDADcCACAfIAMpA+AENwIAIAMgCzYC9AIgAyACNgLwAgJAIAMoArABIgsgAygCrAFHDQAgA0GoAWogCxCxgICAACADKAKwASELCyADKAKoASALQQJ0aiACNgIAIAMgAygCsAFBAWo2ArABIANB0ARqQeSPwYAAEOmBgIAAQRRBBBC2hYCAACICRQ0CIAIgAykD0AQ3AgAgAiAoNgIQIAIgJTYCDCACQQhqIANB0ARqQQhqKAIANgIAIANCgYCAgBA3AowFIAMgAjYCiAUgA0HgBGogIyAkIBIgA0GIBWoQz4KAgAAgAy0A4ARBCUYNASADQeADakEgaiADQeAEakEgaigCADYCACADQeADakEYaiADQeAEakEYaikDADcDACADQeADakEQaiADQeAEakEQaikDADcDACADQeADakEIaiILIANB4ARqQQhqKQMANwMAIAMgAykD4AQ3A+ADIANBrAVqQQA2AgAgA0HsjsGAADYCqAUgA0IBNwKcBSADQeyTwYAANgKYBSADQZgFahDlhICAACECAkACQAJAAkAgAy0A4AMOCAAKAQoCAwoKCQsgCygCACILRQ0JIAMoAuQDIAtBARC3hYCAAAwJCyALKAIAIgtFDQggAygC5AMgC0EBELeFgIAADAgLIAsoAgAiC0UNByADKALkAyALQQEQt4WAgAAMBwsgCygCACILRQ0GIAMoAuQDIAtBARC3hYCAAAwGCyAD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BCECIAtBFGwhDQNAAkACQAJAAkAgAi0AAA4EAAAAAQMLIAJBCGohCwwBCyACQQRqIQsLIAtBBGooAgAiD0UNACALKAIAIA9BARC3hYCAAAsgAkEUaiECIA1BbGoiDQ0ACwsgEEHwAGohAgJAIBBBCGooAgAiC0UNACAQKAIEIAtBFGxBBBC3hYCAAAsgAiEQIAIgDkcNAAsLAkAgA0GcAWooAgAiAkUNACADKAKYASACQfAAbEEEELeFgIAACyADQdAAahCXhICAAAsCQAJAIARFDQAgA0H4A2ogBDYCACADQfQDaiAGNgIAIAMgBDYC6AMgAyAGNgLkA0EAIQIgA0EANgLgAwwBC0ECIQIgA0ECNgLgA0EAIQULIAMgBTYCgAQgAyACNgLwAyADQeADahCWhICAAAsCQCADKAIcIgJFDQAgAygCGCACQQEQt4WAgAALAkAgCUUNACAIIRADQAJAIBBBDGooAgAiC0UNACAQKAIEIQIgC0EUbCENA0ACQAJAAkACQCACLQAADgQAAAABAwsgAkEIaiELDAELIAJBBGohCwsgC0EEaigCACIPRQ0AIAsoAgAgD0EBELeFgIAACyACQRRqIQIgDUFsaiINDQALCyAQQfAAaiECAkAgEEEIaigCACILRQ0AIBAoAgQgC0EUbEEEELeFgIAACyACIRAgAiAKRw0ACwsCQCADQShqKAIAIgJFDQAgCCACQfAAbEEEELeFgIAACyABQQxqKAIAIgJFDQAgASgCCCACQShsQQgQt4WAgAALIANBsAVqJICAgIAAC5wGAwF/AX4DfyOAgICAAEHwAGsiAiSAgICAACACQgA3AwAgAkEoaiABIAJBCBDSjoCAAAJAAkACQAJAAkACQAJAAkACQCACKAIoDQAgAikDACEDIAJBKGogARCZg4CAACACKAIsIgRFDQEgAkEIaiACQTxqKQIANwMAIAJBEGogAkHEAGopAgA3AwAgAkEYaiACQcwAaikCADcDACACQSBqIAJB1ABqKAIANgIAIAIgAikCNDcDACACKAIwIQUgAigCKCEGIAJBKGogARDEgYCAACACKAIoRQ0CIAJB2ABqQQxqIAJBKGpBDGopAgA3AgAgAiACKQIsNwJcIAJBATYCWAwDCyACQShqQRBqKAIAIQUgAkEoakEIaikDACEDIAIoAiwhBEEQQQQQtoWAgAAiAUUNAyABIAU2AgwgASADNwIEIAEgBDYCACAAIAE2AhAgAEEANgIMIABBHGpBLjYCACAAQRhqQfSTwYAANgIAIABBFGpBADYCAAwHC0EQQQQQtoWAgAAiAUUNAyABIAIpAzA3AgAgACABNgIQIABBADYCDCAAQRxqQS82AgAgAEEYakGilMGAADYCACAAQRRqQQA2AgAgAUEIaiACQShqQRBqKQMANwIADAYLIAJB2ABqIAEgAigCLBDzgoCAACACKAJYRQ0EC0EQQQQQtoWAgAAiAUUNAiABIAIpAlw3AgAgACABNgIQIABBADYCDCAAQRxqQTk2AgAgAEEYakHRlMGAADYCACAAQRRqQQA2AgAgAUEIaiACQeQAaikCADcCACAFRQ0EIAQgBUGEAWxBBBC3hYCAAAwEC0EQQQQQqJCAgAAAC0EQQQQQqJCAgAAAC0EQQQQQqJCAgAAACyAAIAIpAlw3AjggAEHAAGogAkHkAGooAgA2AgAgACAFNgIQIAAgBDYCDCAAIAY2AgggACACKQMANwIUIABBHGogAkEIaikDADcCACAAQSRqIAJBEGopAwA3AgAgAEEsaiACQRhqKQMANwIAIABBNGogAkEgaigCADYCACAAIAM3AwALIAJB8ABqJICAgIAAC8gBAQR/I4CAgIAAQTBrIgEkgICAgAAgAEEUaigCACECIAAoAgAhAwJAAkACQAJAIAAoAgQiBA4CAAECCyACDQFB7I7BgABBABDAgoCAACEADAILIAINACADKAIAIAMoAgQQwIKAgAAhAAwBCyABQRhqQRBqIABBEGooAgA2AgAgASAENgIcIAEgAzYCGCABIAI2AiwgASAAKQIINwMgIAFBCGogAUEYahCtkICAACABQQhqEMSCgIAAIQALIAFBMGokgICAgAAgAAubAgEGfwJAIABBEGooAgAiAUUNACAAQQxqKAIAIAFBhAFsQQQQt4WAgAALAkAgAEHAAGooAgAiAUUNACAAKAI4IgIgAUHwAGxqIQMDQAJAIAJBDGooAgAiBEUNACACKAIEIQEgBEEUbCEFA0ACQAJAAkACQCABLQAADgQAAAABAwsgAUEIaiEEDAELIAFBBGohBAsgBEEEaigCACIGRQ0AIAQoAgAgBkEBELeFgIAACyABQRRqIQEgBUFsaiIFDQALCyACQfAA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RQ0AIAVBBXQhBSAKIQMDQCANIANBGGopAAA3AwAgCSADQRBqKQAANwMAIAcgA0EIaikAADcDACAEIAMpAAA3A8ABIANBIGohAyAEQdgAaiAEQcABahDEhICAABogBUFgaiIFDQALCyALRQ0AIAogC0EFdEEBELeFgIAACyAIQYQBaiIIIBFHDQALCyAEQcABaiABKAI4IgMgAyABQcAAaigCAEHwAGxqEPqBgIAAIARB2ABqIARBwAFqEM2EgIAARQ0CIABBAjYCACAEQcABahDQhICAACAEQdgAahDQhICAACAEQShqEJeEgIAADAsLIARB1AFqQQA2AgAgBEHsjsGAADYC0AEgBEIBNwLEASAEQeyWwYAANgLAASAEQcABahDlhICAACEDIAQoAqQBIgdFDQMgBSAHQQEQt4WAgAAMAwsgBEHUAWpBADYCACAEQeyOwYAANgLQASAEQgE3AsQBIARB1JrBgAA2AsABIARBwAFqEOWEgIAAIQMMAgsgBEH8AGpBADYCACAEQeyOwYAANgJ4IARCATcCbCAEQciZwYAANgJoIAAgBEHoAGoQ5YSAgAA2AgQgAEEANgIAIARBwAFqENCEgIAADAILIAAgAzYCBCAAQQA2AgAMCAsgACADNgIEIABBADYCAAsgBEHYAGoQ0ISAgAAMBAtBjJjBgABB8gBBmJrBgAAQy5CAgAAACyAEQfwAakEANgIAIARB7I7BgAA2AnggBEIBNwJsIARBoJvBgAA2AmggBEHoAGoQ5YSAgAAhAyAAQQA2AgALIAAgAzYCBAwBCyAEQfwAakEBNgIAIARCATcCbCAEQdCXwYAANgJoIARBmYGAgAA2AsQBIAQgBEHAAWo2AnggBCAEQThqNgLAASAAIARB6ABqEOWEgIAANgIEIABBADYCAAsgBEEoahCXhICAAAsgBEEcaigCACIDRQ0AIAQoAhggA0EwbEEIELeFgIAACyAEQeABaiSAgICAAAujAwEBfyOAgICAAEHAAGsiAiSAgICAAAJAAkACQAJAAkAgACgCAA4EAAECAwALIAIgAEEEajYCDCACQTxqQQE2AgAgAkIBNwIsIAJB6K7BgAA2AiggAkGwgICAADYCFCACIAJBEGo2AjggAiACQQxqNgIQIAEgAkEoahDykICAACEADAMLIAIgAEEEajYCBCACIABBEGo2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GCAEQQI2AjwgBEIDNwIsIARBhKPBgAA2AiggBCAEQRhqNgI4IARBCGogBEEoahCtkICAACAEQQhqEM+BgIAAIQAMAQsgBEEANgIgIARCATcDGCAEQShqIAIQgoWAgAACQAJAAkAgBCgCKA0AIAQpAzAiBSACKAIAQQRqNQIAVg0CIARBKGogAiAFpxCyg4CAACAEQRhqIARBKGoQ/YKAgAAMAQsgBCgCLCIADQILIARBKGpBCGoiAiAEQRhqQQhqKAIANgIAIAQgBCkDGDcDKAJAIAEoAggiACABKAIERw0AIAEgABCvgICAACABKAIIIQALIAEoAgAgAEEMbGoiACAEKQMoNwIAIABBCGogAigCADYCACABIAEoAghBAWo2AghBACEADAELQYCkwYAAQRAQ0IGAgAAhAAsgBEHAAGokgICAgAAgAAugAgIBfwF+I4CAgIAAQcAAayIEJICAgIAAIAQgADoAByAEQQI6AAYCQAJAIABB/wFxQQJGDQAgBEEkakGjgICAADYCACAEQaOAgIAANgIcIAQgBEEGajYCICAEIARBB2o2AhggBEECNgI8IARCAzcCLCAEQYSjwYAANgIoIAQgBEEYajYCOCAEQQhqIARBKGoQrZCAgAAgBEEIahDPgYCAACEADAELIARBKGogAhCChYCAAAJAIAQoAihFDQAgBCgCLCEADAELAkAgBCkDMCIFIAIoAgBBBGo1AgBWDQAgBEEoaiACIAWnELKDgIAAIAEgBEEoahD9goCAAEEAIQAMAQtBgKTBgABBEBDQgYCAACEACyAEQcAAaiSAgICAACAAC6UCAgF/AX4jgICAgABBwABrIgQkgICAgAAgBCAAOgAHIARBAjoABgJAAkAgAEH/AXFBAkYNACAEQSRqQaOAgIAANgIAIARBo4CAgAA2AhwgBCAEQQZqNgIgIAQgBEEHajYCGCAEQQI2AjwgBEIDNwIsIARBhKPBgAA2AiggBCAEQRhqNgI4IARBCGogBEEoahCtkICAACAEQQhqEM+BgIAAIQAMAQsgBEEoaiACEICFgIAAAkAgBCgCKEUNACAEKAIsIQAMAQsCQCAEKQMwIgUgAigCACIAKAIAQQRqNQIAVg0AIARBKGogACAFpxCyg4CAACABIARBKGoQ/YKAgABBACEADAELQYCkwYAAQRAQ0IGAgAAhAAsgBEHAAGokgICAgAAgAAupBAICfgN/IABBA3RBAnIiAK0hAwJAAkAgAEH/AEsNACACKAIIIQAMAQsgAigCCCEAIAMhBANAIASnQYB/ciEFAkACQCACKAIEIABGDQAgACEGDAELIAIgAEEBELqAgIAAIAIoAgghBgsgAiAGQQFqIgA2AgggAigCACAGaiAFOgAAIARC//8AViEGIARCB4giAyEEIAYNAAsLIAOnIQUCQCACKAIEIABHDQAgAiAAQQEQuoCAgAAgAigCCCEACyACIABBAWoiBjYCCCACKAIAIgcgAGogBToAACABEL6NgIAAIgCtIQQCQAJAIABBgAFPDQAgBCEDDAELA0AgBKdBgH9yIQUCQAJAIAIoAgQgBkYNACAGIQAMAQsgAiAGQQEQuoCAgAAgAigCACEHIAIoAgghAAsgAiAAQQFqIgY2AgggByAAaiAFOgAAIARC//8AViEAIARCB4giAyEEIAANAAsLIAOnIQUCQCACKAIEIgAgBkcNACACIAZBARC6gICAACACKAIEIQAgAigCCCEGCyACKAIAIAZqIAU6AAAgAiAGQQFqIgY2AgggASgCACEHAkACQAJAIAAgBmsiBSABQQhqKAIAIgBPDQAgAiAGIAAQuoCAgAAgAigCBCACKAIIIgZrIQUMAQsgAEUNAQsCQCAFIABPDQAgAiAGIAAQuoCAgAAgAigCCCEGCyACKAIAIAZqIAcgABC8kYCAABogAiAGIABqNgIICwsXACAAQZClwYAANgIEIAAgAUEgajYCAAsXACAAQcylwYAANgIEIAAgAUEgajYCAAsXACAAQYimwYAANgIEIAAgAUEgajYCAAsXACAAQcSmwYAANgIEIAAgAUEgajYCAAthAQJ/AkACQCAAKAIEIgFBA0sNACABQQJHDQELIABBEGoiARCEg4CAACAAQRRqKAIAIgJFDQAgASgCACACQQxsQQQQt4WAgAALIABBIGoQ6YSAgAAgAEHIAEEEELeFgIAAC3QBAn8CQAJAIAAoAgQiAUEDSw0AIAFBAkcNAQsgAEEQaiIBEISDgIAAIABBFGooAgAiAkUNACABKAIAIAJBDGxBBBC3hYCAAAsCQCAAQSRqKAIAIgFFDQAgACgCICABQQEQt4WAgAALIABBLEEEELeFgIAAC5QBAQJ/AkACQCAAKAIEIgFBA0sN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KAIAIQMgAkHAAWogAigCDCIFIAJBCGpBDGooAgAQvYKAgAACQAJAAkAgAigCwAFFDQAgAkG0AmogAkHQAWopAwA3AgAgAkGgAmpBDGogAkHAAWpBCGopAwA3AgAgAiACKQPAATcCpAIMAQsgAkGgAmogAigCxAEQ9omAgAAgAi0AoAIiBEE5Rw0BCyACQbQCaigCACEGIAJBoAJqQQhqKAIAIQcgAigCpAIhCCACQcABaiACQaACakEQaigCACIJIAJBuAJqKAIAEM2BgIAAAkACQAJAAkACQAJAAkACQCACKALQASIERQ0AIAJBjwFqIAJBwAFqQQhqKQMANwAAIAJB8ABqQQhqIAJB7AFqKAIANgIAIAIgAikDwAE3AIcBIAIgAikC5AE3A3AgAigC1AEhCiACKALYASELIAIoAtwBIQwgAigC4AEhDQwBCyACQYADakEQaiACQeQBaigCADYCACACQYADakEIaiACQdwBaikCADcDACACIAIpAtQBNwOAAyACQZGAgIAANgKsAyACIAJBgANqNgKoAyACQQE2ArQCIAJCATcCpAIgAkHcsMGAADYCoAIgAiACQagDajYCsAIgAkGYA2ogAkGgAmoQrZCAgAAgAkGgAmogAkGYA2oQ9ImAgAACQCACKAKAAw0AIAJBiANqKAIAIgRFDQAgAigChAMgBEEBELeFgIAACyACQYADakEQahCRjYCAACACQYABakEIaiIOIAJBoAJqQQlqKQAANwMAIAJBgAFqQQ9qIg8gAkGgAmpBEGopAAA3AAAgAkHwAGpBCGoiECACQaACakE0aigCADYCACACIAIpAKECNwOAASACIAIpAswCNwNwIAIoArgCIQQgAigCvAIhCiACKALAAiELIAIoAsQCIQwgAigCyAIhDSACLQCgAiIRQTlHDQELIAJBwAFqIAQgCxC9goCAACACKALAAUUNASACQbQCaiACQdABaikDADcCACACQawCaiACQcgBaikDADcCACACIAIpA8ABNwKkAgwCCyACKQPYAiESIAJB2ABqQQ9qIhMgDykAADcAACACQdgAakEIaiIPIA4pAwA3AwAgAkHIAGpBCGoiDiAQKAIANgIAIAIgAikDgAEiFDcDWCACIAIpA3A3A0ggAEEYaiATKQAANwAAIABBEWogDykDADcAACAAQQlqIBQ3AAAgAEEwaiANNgIAIABBLGogDDYCACAAQShqIAs2AgAgAEEkaiAKNgIAIABBIGogBDYCACAAQcAAaiASNwMAIAAgEToACCAAQgI3AwAgAEE0aiACKQNINwAAIABBPGogDigCADYAAAwLCyACQaACaiACKALEARD2iYCAACACLQCgAiILQTlHDQELIAJBtAJqKAIAIQsgAkGgAmpBCGooAgAhDiACKAKkAiEPIAJBoAJqIAJBoAJqQRBqIhEoAgAiECACQbgCaiITKAIAEM+AgIAAIAIpA6ACQgJSDQEgAkHYAGpBEGogEygCADYCACACQdgAakEIaiARKQMANwMAIAIgAikDqAI3A1ggAkHAAWpBCGogAkHYAGoQ+YmAgAAMAgsgAEELaiACLQCjAjoAACAAQQlqIAIvAKECOwAAIABBJGogAikCvAI3AgAgAEEsaiACQaACakEkaikCADcCACAAQTRqIAJBoAJqQSxqKQIANwIAIABBPGogAkGgAmpBNGopAgA3AgAgAEHEAGogAkGgAmpBPGooAgA2AgAgAikCpAIhEiACKQKsAiEUIABBHGogAikCtAI3AgAgAEEUaiAUNwIAIABBDGogEjcCACAAIAs6AAggAEICNwMADAcLIAJBwAFqIAJBoAJqQeAAELyRgIAAGiACKQPAASISQgJSDQULIAJBgAFqQThqIAJBwAFqQcAAaikDACISNwMAIAJBgAFqQTBqIAJBwAFqQThqKQMAIhQ3AwAgAkGAAWpBKGogAkHAAWpBMGopAwAiFTcDACACQYABakEgaiACQcABakEoaikDACIWNwMAIAJBgAFqQRhqIAJBwAFqQSBqKQMAIhc3AwAgAkGAAWpBEGogAkHAAWpBGGopAwAiGDcDACACQYgBaiACQcABakEQaikDACIZNwMAIAIgAikDyAEiGjcDgAEgAEHAAGogEjcDACAAQThqIBQ3AwAgAEEwaiAVNwMAIABBKGogFjcDACAAQSBqIBc3AwAgAEEYaiAYNwMAIABBEGogGTcDACAAIBo3AwggAEICNwMAAkAgDkUNACAPIA5BARC3hYCAAAsgC0UNBSAQIAtBARC3hYCAAAwFCyAAQQtqIAItAKMCOgAAIABBCWogAi8AoQI7AAAgAEEkaiACKQK8AjcCACAAQSxqIAJBoAJqQSRqKQIANwIAIABBNGogAkGgAmpBLGopAgA3AgAgAEE8aiACQaACakE0aikCADcCACAAQcQAaiACQaACakE8aigCADYCACACKQKkAiESIAIpAqwCIRQgAEEcaiACKQK0AjcCACAAQRRqIBQ3AgAgAEEMaiASNwIAIAAgBDoACCAAQgI3AwAMBgsgACACKQMINwMIIABCAjcDACAAQcAAaiACQQhqQThqKQMANwMAIABBOGogAkEIakEwaikDADcDACAAQTBqIAJBCGpBKGopAwA3AwAgAEEoaiACQQhqQSBqKQMANwMAIABBIGogAkEIakEYaikDADcDACAAQRhqIAJBCGpBEGopAwA3AwAgAEEQaiACQQhqQQhqKQMANwMADAYLQQtBARCokICAAAALQQlBARCokICAAAALIAAgAikDiAI3A0ggAkGAAWpBOGoiESACQcABakHAAGopAwA3AwAgAkGAAWpBMGoiEyACQcABakE4aikDADcDACACQYABakEoaiIbIAJBwAFqQTBqKQMANwMAIAJBgAFqQSBqIhwgAkHAAWpBKGopAwA3AwAgAkGAAWpBGGoiHSACQcABakEgaikDADcDACACQYABakEQaiIeIAJBwAFqQRhqKQMANwMAIAJBiAFqIh8gAkHAAWpBEGopAwA3AwAgAEHQAGogAkHAAWpB0ABqKQMANwMAIABB2ABqIAJBwAFqQdgAaikDADcDACACIAIpA8gBNwOAASAAQcAAaiARKQMANwMAIABBOGogEykDADcDACAAQTBqIBspAwA3AwAgAEEoaiAcKQMANwMAIABBIGogHSkDADcDACAAQRhqIB4pAwA3AwAgAEEQaiAfKQMANwMAIAAgAikDgAE3AwggACASNwMAAkAgDkUNACAPIA5BARC3hYCAAAsCQCALRQ0AIBAgC0EBELeFgIAACwJAIApFDQAgBCAKQQEQt4WAgAALAkAgDUUNACAMIA1BARC3hYCAAAsCQCAHRQ0AIAggB0EBELeFgIAACyAGRQ0CIAkgBkEBELeFgIAADAILAkAgCkUNACAEIApBARC3hYCAAAsgDUUNACAMIA1BARC3hYCAAAsCQCAHRQ0AIAggB0EBELeFgIAACyAGRQ0AIAkgBkEBELeFgIAACyADRQ0AIAUgA0EBELeFgIAACyABQQtBARC3hYCAACACQbADaiSAgICAAAvKAwEDfyOAgICAAEHgAGsiBSSAgICAACABKAIEIQYgASgCACEHIAUgBDcDECAFIAM3AwgCQEEQQQEQtoWAgAAiAUUNACABQQhqQQApAOywwYAANwAAIAFBACkA5LDBgAA3AAAgBUG7gICAADYCRCAFIAVBCGo2AkAgBUEBNgJcIAVCATcCTCAFQfSwwYAANgJIIAUgBUHAAGo2AlggBUEwaiAFQcgAahCtkICAACAFQSxqIAVBMGpBCGooAgA2AgAgBUKQgICAgAI3AhwgBSABNgIYIAUgBSkDMDcCJCAFQTBqIAVBGGpBAhD6goCAAAJAIAUoAhwiAUUNACAFKAIYIAFBARC3hYCAAAsCQCAFQShqKAIAIgFFDQAgBSgCJCABQQEQt4WAgAALIAVBGGogByAFKAIwIgEgBSgCOCAGKAIMEYCAgIAAAAJAAkAgBSgCGA0AIAVByABqIAIQr5CAgAAgACAFQcgAaiADIAQQ84mAgAAMAQsgACAFKQMYNwIEIABBOToAACAAQQxqIAVBIGooAgA2AgALAkAgBSgCNCIARQ0AIAEgAEEBELeFgIAACyAFQeAAaiSAgICAAA8LQRBBARCokICAAAAL7gwCEn8CfiOAgICAAEGgAWsiAiSAgICAACACQegAakEIaiABQShqKAIANgIAIAIgASkCIDcDaCACQTBqIAJB6ABqEJ6KgIAAAkACQAJAAkACQAJAIAIoAjAiA0UNACACQR5qIAJBO2otAAA6AAAgAiACLwA5OwEcIAFBNGooAgAiBEUNAyACLQA4IQUgAigCNCEGIAEoAiwiBygCCCEIIAcoAgQhCSAHKAIAIQogByAHQQxqIARBf2oiC0EMbBDBkYCAACEMIAEgCzYCNCACQSBqIAwgC0GEs8GAAEEAELKCgIAAIAJB6ABqIAIoAiAiDSACKAIoELmKgIAAIAIoAmgiDkEPRg0BIAJBMGpBCGoiByACQYQBaiIPKQIANwMAIAJBMGpBEGoiECACQYwBaiIRKAIANgIAIAJByABqQQhqIhIgAkHoAGpBDGoiEykCADcDACACIAIpAnw3AzAgAiACKQJsNwNIIAJBCGogASkDACABKQMIEKaLgIAAIAIpAxAhFCACKQMIIRUgEyASKQMANwIAIA8gBykDADcCACARIBAoAgA2AgAgAiAONgJoIAIgAikDSDcCbCACIAIpAzA3AnwgAUE8aigCACEHIAFBwABqKAIAIRAgASgCOCEPIAIgCDYCYCACIAk2AlwgAiAKNgJYIAJBkAFqIAJB2ABqEJ+KgIAAIAIoApABIglFDQIgACACLwCZATsAQSAAQcMAaiACQZsBai0AADoAACACKAKUASEKIAItAJgBIQ4gAEHPAGogAkEeai0AADoAACAAIAIvARw7AE0gACACKQNoNwMAIABBCGogAkHoAGpBCGopAwA3AwAgAEEQaiACQegAakEQaikDADcDACAAQRhqIAJB6ABqQRhqKQMANwMAIABBIGogAkHoAGpBIGopAwA3AwAgACAQNgJYIAAgBzYCVCAAIA82AlAgACAFOgBMIAAgBjYCSCAAIAM2AkQgACAOOgBAIAAgCjYCPCAAIAk2AjggACAUNwMwIAAgFTcDKAJAIAIoAiQiAEUNACANIABBARC3hYCAAAsCQCALRQ0AIARBDGxBdGohCyAMIQADQAJAIABBBGooAgAiBkUNACAAKAIAIAZBARC3hYCAAAsgAEEMaiEAIAtBdGoiCw0ACwsgAUEwaigCACIARQ0FIAwgAEEMbEEEELeFgIAADAULIAIoAjQhCyAAQRBqIAJBMGpBCGotAAA6AAAgAEEMaiALNgIAIABBBzYCCCAAQQ82AgAgAUE0aigCACELIAEoAiwhBwwDCyACQeAAaiACQegAakEMaikCACIUNwMAIAIgAikCbCIVNwNYIABBFGogFDcCACAAQQxqIBU3AgAgAEEGNgIIIABBDzYCAAJAIAIoAiQiAEUNACANIABBARC3hYCAAAsCQCAJRQ0AIAogCUEBELeFgIAACyAGRQ0CIAMgBkEBELeFgIAADAILIAIoApQBIQkgAEEQaiACQZABakEIai0AADoAACAAQQxqIAk2AgAgAEEINgIIIABBDzYCAAJAIAdFDQAgDyAHQQEQt4WAgAALIAJB6ABqQQRyIQACQAJAAkACQAJAAkACQAJAAkACQCAOQX5qDgwACAgIAQIDBAUGBwkICyACQYABaiEADAcLIAJB+ABqIQAMBgsgAkH4AGohAAwFCyACQfgAaiEADAQLIAJB+ABqIQAMAwsgAkGAAWohAAwCCyACQYABaiEADAELIAJBgAFqIQALIABBBGooAgAiB0UNACAAKAIAIAdBARC3hYCAAAsCQCAGRQ0AIAMgBkEBELeFgIAACwJAIAIoAiQiAEUNACANIABBARC3hYCAAAsCQCALRQ0AIARBDGxBdGohCyAMIQADQAJAIABBBGooAgAiBkUNACAAKAIAIAZBARC3hYCAAAsgAEEMaiEAIAtBdGoiCw0ACwsgAUEwaigCACIARQ0CIAwgAEEMbEEEELeFgIAADAILQQBBAEGws8GAABCxkICAAAALAkAgC0UNACALQQxsIQsgByEAA0ACQCAAQQRqKAIAIgZFDQAgACgCACAGQQEQt4WAgAALIABBDGohACALQXRqIgsNAAsLAkAgAUEwaigCACIARQ0AIAcgAEEMbEEEELeFgIAACyABQTxqKAIAIgBFDQAgASgCOCAAQQEQt4WAgAALIAJBoAFqJICAgIAAC7oKAhF/An4jgICAgABBoAFrIgIkgICAgAAgAkHoAGpBCGogAUEoaigCADYCACACIAEpAiA3A2ggAkEwaiACQegAahCeioCAAAJAAkACQAJAAkAgAigCMCIDRQ0AIAJBHmogAkE7ai0AADoAACACIAIvADk7ARwgAUE0aigCACIERQ0EIAItADghBSACKAI0IQYgASgCLCIHKAIIIQggBygCBCEJIAcoAgAhCiAHIAdBDGogBEF/aiIEQQxsEMGRgIAAIQsgASAENgI0IAJBIGogCyAEQYSzwYAAQQAQsoKAgAAgAkHoAGogAigCICIMIAIoAigQuYqAgAAgAigCaCILQQ9GDQEgAkEwakEIaiINIAJBhAFqIg4pAgA3AwAgAkEwakEQaiIPIAJBjAFqIhAoAgA2AgAgAkHIAGpBCGoiESACQegAakEMaiISKQIANwMAIAIgAikCfDcDMCACIAIpAmw3A0ggAkEIaiABKQMAIAEpAwgQpouAgAAgAikDECETIAIpAwghFCASIBEpAwA3AgAgDiANKQMANwIAIBAgDygCADYCACACIAs2AmggAiACKQNINwJsIAIgAikDMDcCfCACIAg2AmAgAiAJNgJcIAIgCjYCWCACQZABaiACQdgAahCfioCAACACKAKQASIJRQ0CIAAgAi8AmQE7AEEgAEHDAGogAkGbAWotAAA6AAAgAigClAEhCyACLQCYASEKIABBzwBqIAJBHmotAAA6AAAgACACLwEcOwBNIAAgAikDaDcDACAAQQhqIAJB6ABqQQhqKQMANwMAIABBEGogAkHoAGpBEGopAwA3AwAgAEEYaiACQegAakEYaikDADcDACAAQSBqIAJB6ABqQSBqKQMANwMAIAAgBToATCAAIAY2AkggACADNgJEIAAgCjoAQCAAIAs2AjwgACAJNgI4IAAgEzcDMCAAIBQ3AyggAigCJCIARQ0DIAwgAEEBELeFgIAADAMLIAIoAjQhByAAQRBqIAJBMGpBCGotAAA6AAAgAEEMaiAHNgIAIABBBzYCCCAAQQ82AgAgAUE0aigCACEEIAEoAiwhBwwCCyACQeAAaiACQegAakEMaikCACITNwMAIAIgAikCbCIUNwNYIABBFGogEzcCACAAQQxqIBQ3AgAgAEEGNgIIIABBDzYCAAJAIAIoAiQiAEUNACAMIABBARC3hYCAAAsCQCAJRQ0AIAogCUEBELeFgIAACyAGRQ0BIAMgBkEBELeFgIAADAELIAJB6ABqQQRyIQkgAigClAEhCiAAQRBqIAJBkAFqQQhqLQAAOgAAIABBDGogCjYCACAAQQg2AgggAEEPNgIAAkACQAJAAkACQAJAAkACQAJAAkAgC0F+ag4MAAgICAECAwQFBgcJCAsgAkGAAWohCQwHCyACQfgAaiEJDAYLIAJB+ABqIQkMBQsgAkH4AGohCQwECyACQfgAaiEJDAMLIAJBgAFqIQkMAgsgAkGAAWohCQwBCyACQYABaiEJCyAJQQRqKAIAIgBFDQAgCSgCACAAQQEQt4WAgAALAkAgBkUNACADIAZBARC3hYCAAAsgAigCJCIARQ0AIAwgAEEBELeFgIAACwJAIARFDQAgBEEMbCEAA0ACQCAHQQRqKAIAIgRFDQAgBygCACAEQQEQt4WAgAALIAdBDGohByAAQXRqIgANAAsLAkAgAUEwaigCACIHRQ0AIAEoAiwgB0EMbEEEELeFgIAACyACQaABaiSAgICAAA8LQQBBAEHAs8GAABCxkICAAAAL5wwCCn8CfiOAgICAAEGQAmsiAiSAgICAAAJAAkACQAJAAkACQAJAIAEoAhBFDQAgASgCGCEDIAEoAhQhBCACIAEoAhw2AowBIAIgBDYCiAEgAkGgAWogAkGIAWoQu4KAgAAgAigCoAEiBUUNASACKAKwASEBIAIoAqQBIQYgAkGgAWogAigCrAEiByACKAK0ARDhhICAACACKAKwASIIRQ0CIAJB+ABqQQhqIgkgAkGgAWpBCGopAwA3AwAgAkGIAWpBCGoiCiACQbwBaikCADcDACACQYgBakEQaiILIAJBxAFqKAIANgIAIAJBGGpBCGogAkHQAWopAwA3AwAgAkEYakEQaiACQdgBaikDADcDACACQTBqIAJB4AFqKQMANwMAIAJBOGogAkHoAWopAwA3AwAgAkHAAGogAkHwAWopAwA3AwAgAiACKQOgATcDeCACIAIpArQBNwOIASACIAIpA8gBNwMYIAJByABqQQhqIAopAwA3AwAgAkHIAGpBEGogCygCADYCACACQewAaiAJKQMANwIAIAIgAikDiAE3A0ggAiACKQN4NwJkAkAgBkUNACAFIAZBARC3hYCAAAsCQCABRQ0AIAcgAUEBELeFgIAAC0EAIQEgA0UNBSAEIANBARC3hYCAAAwFCyABKAIEIQQgASgCACEDIAIgASgCCDYCjAEgAiADNgKIASACQaABaiACQYgBahC7goCAAAJAAkAgAigCoAEiB0UNACACKAKwASEGIAIoAqQBIQUgAkGgAWogAigCrAEiCSACKAK0ARDihICAACACKAKgASIBRQ0BIAJBiAFqQRBqIgogAkG0AWooAgA2AgAgAkGIAWpBCGoiCyACQawBaikCADcDACACQcgAakEIaiACQcQBaikCADcDACACQcgAakEQaiACQcwBaigCADYCACACQRhqQQhqIAJB2AFqKQMANwMAIAJBGGpBEGogAkHgAWopAwA3AwAgAkEwaiACQegBaikDADcDACACQThqIAJB8AFqKQMANwMAIAJBwABqIAJB+AFqKQMANwMAIAIgAikCpAE3A4gBIAIgAikCvAE3A0ggAiACKQPQATcDGCACKAK4ASEIIAJBCGpBCGogAkGIAmopAwA3AwAgAkHgAGpBCGogCykDADcDACACQeAAakEQaiAKKAIANgIAIAIgAikDgAI3AwggAiACKQOIATcDYAJAIAVFDQAgByAFQQEQt4WAgAALAkAgBkUNACAJIAZBARC3hYCAAAsgBEUNBiADIARBARC3hYCAAAwGCyAAQQxqIAIoAqQBNgIAIABBCTYCCCAAQgE3AwAMBAsgAkGYAWogAkGgAWpBFGooAgAiATYCACACQZABaiACQaABakEMaikCACIMNwMAIAIgAikCpAEiDTcDiAEgAEEcaiABNgIAIABBFGogDDcCACAAQQxqIA03AgAgAEEENgIIIABCATcDAAJAIAVFDQAgByAFQQEQt4WAgAALIAZFDQMgCSAGQQEQt4WAgAAMAwsgAEEMaiACKAKkATYCACAAQQk2AgggAEIBNwMADAELIAJBmAFqIAJBxAFqKAIAIgg2AgAgAkGQAWogAkGgAWpBHGopAgAiDDcDACACIAIpArQBIg03A4gBIABBHGogCDYCACAAQRRqIAw3AgAgAEEMaiANNwIAIABBBDYCCCAAQgE3AwACQCAGRQ0AIAUgBkEBELeFgIAACyABRQ0AIAcgAUEBELeFgIAACyADRQ0CIAQgA0EBELeFgIAADAILIARFDQEgAyAEQQEQt4WAgAAMAQsgAEEMaiACKQNgNwIAIABBJGogAikDSDcCACAAQThqIAIpAxg3AgAgAEEcaiACQeAAakEQaigCADYCACAAQRRqIAJB4ABqQQhqKQMANwIAIABBLGogAkHIAGpBCGopAwA3AgAgAEE0aiACQcgAakEQaigCADYCACAAQcAAaiACQRhqQQhqKQMANwIAIABByABqIAJBGGpBEGopAwA3AgAgAEHQAGogAkEwaikDADcCACAAQdgAaiACQRhqQSBqKQMANwIAIABB4ABqIAJBwABqKQMANwIAIABBIGogCDYCACAAIAE2AgggAEIANwMAIABB8ABqIAJBCGpBCGopAwA3AwAgAEHoAGogAikDCDcDAAsgAkGQAmokgICAgAAL8QsEBn8Bfgd/A34jgICAgABB0AFrIgIkgICAgAAgAiABQRhqKAIANgIEIAIgAUEQaigCACIDNgIAIAJB2ABqIAIQu4KAgAACQAJAAkACQAJAAkACQAJAIAIoAlgiBEUNACACKAJoIQUgAigCXCEGIAJB2ABqIAIoAmQiByACKAJsEM+AgIAAIAIpA1giCEICUQ0BIAJBuAFqQRBqIgkgAkHYAGpBGGooAgA2AgAgAkG4AWpBCGoiCiACQdgAakEQaikDADcDACACQTBqQQhqIAJB/ABqKQIANwMAIAJBCGogAkGUAWopAgA3AwAgAkEQaiACQZwBaikCADcDACACQRhqIAJBpAFqKQIANwMAIAJBIGogAkGsAWopAgA3AwAgAkEoaiACQbQBaigCADYCACACIAIpA2A3A7gBIAIgAikCdDcDMCACIAIpAowBNwMAIAIoAoQBIQsgAigCiAEhDCACQcAAakEIaiAKKQMANwMAIAJBwABqQRBqIAkoAgA2AgAgAiACKQO4ATcDQCACIAFBwABqKAIANgK8ASACIAFBOGoiCSgCADYCuAEgAkHYAGogAkG4AWoQu4KAgAAgAigCWCINRQ0CIAIoAmghCiACKAJcIQ4gAkHYAGogAigCZCIPIAIoAmwQh4GAgAAgAigCWA0DIAJBuAFqQRBqIAJB7ABqKQIAIhA3AwAgAkG4AWpBCGogAkHkAGopAgAiETcDACACIAIpAlwiEjcDuAEgAEHwAGogEDcCACAAQegAaiARNwIAIAAgEjcCYCAAQRhqIAJBwABqQRBqKAIANgIAIABBEGogAkHAAGpBCGopAwA3AwAgACACKQNANwMIIAAgAikDMDcCHCAAQSRqIAJBMGpBCGopAwA3AgAgACACKQMANwI0IABBPGogAkEIaikDADcCACAAQcQAaiACQRBqKQMANwIAIABBzABqIAJBGGopAwA3AgAgAEHUAGogAkEgaikDADcCACAAQdwAaiACQShqKAIANgIAIABBgAFqIAFB0ABqKAIANgIAIAAgASkDSDcDeCAAIAw2AjAgACALNgIsIAAgCDcDACAAQYwBaiABQdwAaigCADYCACAAIAEpAlQ3AoQBAkAgDkUNACANIA5BARC3hYCAAAsCQCAKRQ0AIA8gCkEBELeFgIAACwJAIAZFDQAgBCAGQQEQt4WAgAALAkAgBUUNACAHIAVBARC3hYCAAAsCQCABQRRqKAIAIgBFDQAgAyAAQQEQt4WAgAALIAFBIGooAgAiAEUNByABKAIcIABBARC3hYCAAAwHCyAAQQxqIAIoAlw2AgAgAEEJNgIIIABCAjcDAAwFCyACQbgBakEQaiACQfAAaigCACIJNgIAIAJBwAFqIAJB2ABqQRBqKQMAIgg3AwAgAiACKQNgIhA3A7gBIABBHGogCTYCACAAQRRqIAg3AgAgAEEMaiAQNwIAIABBBDYCCCAAQgI3AwAMAwsgAEEMaiACKAJcNgIAIABBCTYCCCAAQgI3AwAMAQsgAkHIAWogAkHYAGpBFGooAgAiCTYCACACQcABaiACQdgAakEMaikCACIINwMAIAIgAikCXCIQNwO4ASAAQRxqIAk2AgAgAEEUaiAINwIAIABBDGogEDcCACAAQQQ2AgggAEICNwMAAkAgDkUNACANIA5BARC3hYCAAAsgCkUNACAPIApBARC3hYCAAAsgDEUNACALIAxBKGxBCBC3hYCAAAsCQCAGRQ0AIAQgBkEBELeFgIAACyAFRQ0AIAcgBUEBELeFgIAACwJAIAFBFGooAgAiAEUNACADIABBARC3hYCAAAsCQCABQSBqKAIAIgBFDQAgASgCHCAAQQEQt4WAgAALAkAgAUE8aigCACIARQ0AIAFBOGooAgAgAEEBELeFgIAACwJAIAFBzABqKAIAIgBFDQAgASgCSCAAQQEQt4WAgAALIAFB1ABqIQkLAkAgCUEEaigCACIBRQ0AIAkoAgAgAUEBELeFgIAACyACQdABaiSAgICAAAuqAgEBfyOAgICAAEEgayIDJICAgIAAIANBEGogAkHQs8GAAEEPQQIQ/YaAgAACQAJAAkAgAygCEA0AIAMgAygCFDYCCCADIANBGGotAAA6AAwgA0EQaiADQQhqQd+zwYAAQQMgARD2gICAACADKAIQDQEgA0EQaiADQQhqQeKzwYAAQQUgAUEMahD2gICAAAJAIAMoAhANACAAIAMoAgggAy0ADBCTh4CAAAwDCyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAwCCyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAwBCyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAsgA0EgaiSAgICAAAu6AgECfyOAgICAAEEgayIDJICAgIAAIANBEGogAkHns8GAAEENQQJBASABKAIMIgQbEP2GgIAAAkACQAJAIAMoAhANACADIAMoAhQ2AgggAyADQRhqLQAAOgAMIANBEGogA0EIakH0s8GAAEEGIAEQw4CAgAAgAygCEA0BAkAgBEUNACADQRBqIANBCGpB+rPBgABBECABQQxqEPGAgIAAIAMoAhBFDQAgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMAwsgACADKAIIIAMtAAwQk4eAgAAMAgsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMAQsgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgALIANBIGokgICAgAAL1wMBAn8jgICAgABBIGsiAySAgICAACADQRBqIAJBirTBgABBDkEEQQMgASgCDCIEGxD9hoCAAAJAAkACQAJAIAMoAhANACADIAMoAhQ2AgggAyADQRBqQQhqLQAAOgAMIANBEGogA0EIakGYtMGAAEEIIAFBGGoQ/YCAgAAgAygCEA0BIANBEGogA0EIakGgtMGAAEEJIAEQw4CAgAAgAygCEA0CAkAgBEUNACADQRBqIANBCGpBqbTBgABBBCABQQxqEPOAgIAAIAMoAhBFDQAgACADKQIUNwIEIABBATYCACAAQQxqIANBEGpBDGooAgA2AgAMBAsgA0EQaiADQQhqQa20wYAAQRIgAUEZahD9gICAAAJAIAMoAhANACAAIAMoAgggAy0ADBCTh4CAAAwECyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAwDCyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAwCCyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAwBCyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAsgA0EgaiSAgICAAAvGAwEBfyOAgICAAEEgayIDJICAgIAAIANBEGogAkG/tMGAAEEXQQQQ/YaAgAACQAJAAkACQAJAIAMoAhANACADIAMoAhQ2AgggAyADQRhqLQAAOgAMIANBEGogA0EIakHWtMGAAEEMIAEQ8oCAgAAgAygCEA0BIANBEGogA0EIakHitMGAAEETIAFBMGoQ9ICAgAAgAygCEA0CIANBEGogA0EIakH1tMGAAEEQIAFByABqEPKAgIAAIAMoAhANAyADQRBqIANBCGpBhbXBgABBBiABQfgAahD8gICAAAJAIAMoAhANACAAIAMoAgggAy0ADBCTh4CAAAwFCyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAwECyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAwDCyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAwCCyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAwBCyAAIAMpAhQ3AgQgAEEBNgIAIABBDGogA0EQakEMaigCADYCAAsgA0EgaiSAgICAAAunAwACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAkF0ag4WBQkJCQcBCQkJAAMJCQkJCQQJCQgJBgkLIAFByrXBgABBFRC6kYCAAEUNCSABQYC2wYAAQRUQupGAgABFDQEgAUGVtsGAAEEVELqRgIAADQggAEEVNgIAIABBBDoABA8LIAFB77XBgABBERC6kYCAAA0HIABBFTYCACAAQQI6AAQPCyAAQRU2AgAgAEEDOgAEDwsgAUGqtsGAAEEWELqRgIAADQUgAEEVNgIAIABBBToABA8LIAFBwLbBgABBHBC6kYCAAA0EIABBFTYCACAAQQY6AAQPCyABQdy2wYAAQQwQupGAgAANAyAAQRU2AgAgAEEHOgAEDwsgAUHotsGAAEEhELqRgIAADQIgAEEVNgIAIABBCDoABA8LIAFB37XBgABBEBC6kYCAAEUNAwwBCyABQYm3wYAAQR8QupGAgAANACAAQRU2AgAgAEEJOgAEDwsgACABIAJBqLfBgABBChDkgoCAAA8LIABBFTYCACAAQQE6AAQPCyAAQRU2AgAgAEEAOgAEC4gBAQJ/I4CAgIAAQRBrIgIkgICAgAAgAiABEI6EgIAAAkACQCACKAIAIgFBFUcNACAAQQ42AggMAQsgACACLwAFOwANIABBD2ogAi0ABzoAACACLQAEIQMgAEEQaiACKQMINwMAIABBDGogAzoAACAAIAE2AggLIABCCjcDACACQRBqJICAgIAAC9wMAQR/I4CAgIAAQYABayICJICAgIAAIAJBIGogARCOhICAAAJAAkACQAJAIAIoAiAiA0EVRw0AIAItACQhBCACQSBqIAEQi4eAgAAgAigCICIDQRVGDQIgAkEOaiACLQAnOgAAIAIgAi8AJTsBDAwBCyACQQ5qIAItACc6AAAgAiACLwAlOwEMCyACLQAkIQEgAigCKCEEIAIoAiwhBSAAIAM2AgggACACLwEMOwANIABCCjcDACAAQQxqIAE6AAAgAEEUaiAFNgIAIABBEGogBDYCACAAQQ9qIAJBDmotAAA6AAAMAQsCQAJAAkACQAJAAkACQAJAAkACQCAEDgoJCAcGBQQDAgEACQsgAkEgaiABEL2BgIAAAkAgAigCMEUNACAAQQhqIAJBIGpB4AAQvJGAgAAaIABCCTcDAAwKCyAAIAIpAyA3AwggAEEQaiACQShqKQMANwMAIABCCjcDAAwJCyACQSBqIAFBhrzBgABBI0GEs8GAAEEAEP6DgIAAAkACQCACKAIgIgNBFUcNACACQQhqIAEQjYeAgABBBCEDIAItAAhBAXFFDQFBCyEDIAItAAlB/wFxQf0ARw0BIAEQhoeAgAAgAEIINwMADAoLIAJBGGogAkEsaigCADYCACACIAIpAiQ3AxALIAAgAzYCCCAAQQxqIAIpAxA3AgAgAEEUaiACQRhqKAIANgIAIABCCjcDAAwICyACQSBqIAEQvIGAgAACQCACKAIgDQAgACACKQMoNwMIIABBIGogAkEgakEgaikDADcDACAAQRhqIAJBIGpBGGopAwA3AwAgAEEQaiACQSBqQRBqKQMANwMAIABCBzcDAAwICyAAIAIpAiQ3AgggAEEQaiACQSxqKQIANwIAIABCCjcDAAwHCyACQSBqIAEQuYGAgAACQCACKAIgDQAgACACKQMoNwMIIABBIGogAkEgakEgaikDADcDACAAQRhqIAJBIGpBGGopAwA3AwAgAEEQaiACQSBqQRBqKQMANwMAIABCBjcDAAwHCyAAIAIpAiQ3AgggAEEQaiACQSxqKQIANwIAIABCCjcDAAwGCyACQSBqIAEQu4GAgAACQCACKAIgDQAgACACKQMoNwMIIABBIGogAkEgakEgaikDADcDACAAQRhqIAJBIGpBGGopAwA3AwAgAEEQaiACQSBqQRBqKQMANwMAIABCBTcDAAwGCyAAIAIpAiQ3AgggAEEQaiACQSxqKQIANwIAIABCCjcDAAwFCyACQSBqIAEQt4GAgAACQCACKAIgDQAgACACKQMoNwMIIABBIGogAkEgakEgaikDADcDACAAQRhqIAJBIGpBGGopAwA3AwAgAEEQaiACQSBqQRBqKQMANwMAIABCBDcDAAwFCyAAIAIpAiQ3AgggAEEQaiACQSxqKQIANwIAIABCCjcDAAwECyACQSBqIAEQtYGAgAACQCACKAJARQ0AIAAgAikDIDcDCCAAQThqIAJBIGpBMGopAwA3AwAgAEEwaiACQSBqQShqKQMANwMAIABBKGogAkEgakEgaikDADcDACAAQSBqIAJBIGpBGGopAwA3AwAgAEEYaiACQSBqQRBqKQMANwMAIABBEGogAkEoaikDADcDACAAQgM3AwAMBAsgACACKQMgNwMIIABBEGogAkEoaikDADcDACAAQgo3AwAMAwsgAkEgaiABELiBgIAAAkAgAigCQEUNACAAQQhqIAJBIGpByAAQvJGAgAAaIABCAjcDAAwDCyAAIAIpAyA3AwggAEEQaiACQShqKQMANwMAIABCCjcDAAwCCyACQSBqIAEQuoGAgAACQCACKAIwRQ0AIAAgAikDIDcDCCAAQTBqIAJBIGpBKGopAwA3AwAgAEEoaiACQSBqQSBqKQMANwMAIABBIGogAkEgakEYaikDADcDACAAQRhqIAJBIGpBEGopAwA3AwAgAEEQaiACQShqKQMANwMAIABCATcDAAwCCyAAIAIpAyA3AwggAEEQaiACQShqKQMANwMAIABCCjcDAAwBCyACQSBqIAEQvoGAgAACQCACKAIwRQ0AIABBCGogAkEgakHIABC8kYCAABogAEIANwMADAELIAAgAikDIDcDCCAAQRBqIAJBKGopAwA3AwAgAEIKNwMACyACQYABaiSAgICAAAvJAQACQAJAAkACQAJAAkAgAkF6ag4RAgMDAwMDAwMDAAMDAwMDAwEDCyABQfi3wYAAQQ8QupGAgABFDQQgAUGduMGAAEEPELqRgIAADQIgAEEVNgIAIABBAjoABA8LIAFBh7jBgABBFhC6kYCAAEUNAgwBCyABQfSzwYAAQQYQupGAgAANACAAQRU2AgAgAEEDOgAEDwsgACABIAJBrLjBgABBBBDkgoCAAA8LIABBFTYCACAAQQE6AAQPCyAAQRU2AgAgAEEAOgAEC7wHAQN/I4CAgIAAQcAAayICJICAgIAAIAJBMGogARD6g4CAAAJAAkACQAJAIAIoAjAiA0EVRw0AIAItADQhBCACQTBqIAEQi4eAgAAgAigCMCIDQRVGDQIgAkEeaiACLQA3OgAAIAIgAi8ANTsBHAwBCyACQR5qIAItADc6AAAgAiACLwA1OwEcCyACKAI4IQEgAigCPCEEIAAgAi0ANDoABCAAIAM2AgAgACACLwEcOwAFIAAgBDYCDCAAIAE2AgggAEEHaiACQR5qLQAAOgAADAELAkACQAJAAkAgBA4EAwIBAAMLIAJBMGogAUHsuMGAAEEJQYSzwYAA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QQhqIAFBCGoiBSkAADcDACACIAEpAAA3A/ADIAJBkARqIAJB8ANqENaFgIAAAkACQCACKQOQBFANACACIAJBogFqQQZqIAJByAJqQQZqIAJBkARqQQhqQaABELyRgIAAQaABELyRgIAAQaABELyRgIAAIgZByAVqIAMpAAA3AwAgBkHABWogBCkAADcDACAGQbgFaiAFKQAANwMAIAYgASkAADcDsAUgBkHIAmogBkGgARC8kYCAABogBkGQBGogBkHIAmoQ24WAgAAgAEEIaiAGQZAEakHAARC8kYCAABogAEEAOgAADAELIABBgQI7AQALIAJB0AVqJICAgIAAC+4EAQZ/I4CAgIAAQdAFayIEJICAgIAAIARB4AFqEMuFgIAAIARB+ANqIARB4AFqQdgBELyRgIAAGiAEQfgDaiABQSAQyYWAgAAgBEEIaiAEQfgDakHYARC8kYCAABogBEH4A2ogBEEIakHYARC8kYCAABogBEH4A2ogAEGgAWpBIBDJhYCAACAEQeABaiAEQfgDakHYARC8kYCAABogBEH4A2ogBEHgAWpB2AEQvJGAgAAaIARB+ANqIAIgAxDJhYCAACAEQQhqIARB+ANqQdgBELyRgIAAGiAEQeABakE4aiIFQgA3AwAgBEHgAWpBMGoiBkIANwMAIARB4AFqQShqIgdCADcDACAEQeABakEgaiIIQgA3AwAgBEHgAWpBGGoiA0IANwMAIARB4AFqQRBqIgJCADcDACAEQeABakEIaiIJQgA3AwAgBEIANwPgASAEQfgDaiAEQQhqQdgBELyRgIAAGiAEQfgDaiAEQeABahDMhYCAACAEQbgDakEIaiAJKQMANwMAIARBuANqQRBqIAIpAwA3AwAgBEG4A2pBGGogAykDADcDACAEQbgDakEgaiAIKQMANwMAIARBuANqQShqIAcpAwA3AwAgBEG4A2pBMGogBikDADcDACAEQbgDakE4aiAFKQMANwMAIAQgBCkD4AE3A7gDIARB4AFqIARBuANqEM+FgIAAIARB+ANqQRhqIAMpAwA3AwAgBEH4A2pBEGogAikDADcDACAEQfgDakEIaiAJKQMANwMAIAQgBCkD4AE3A/gDIAAgASAEQfgDahDGhYCAACEBIARB0AVqJICAgIAAIAFB/wFxC48EAQF/I4CAgIAAQeAGayIDJICAgIAAIANB8AJqQRhqIAFBOGopAAA3AwAgA0HwAmpBEGogAUEwaikAADcDACADQfACakEIaiABQShqKQAANwMAIAMgASkAIDcD8AIgA0GYBGogA0HwAmoQ0IWAgAACQAJAIAMtAJgERQ0AIANBEWogA0GiBGopAQA3AAAgA0EZaiADQaoEaikBADcAACADQQhqQRhqIANBsQRqKQAANwAAIAMgAykBmgQ3AAkgAyADLQCZBDoACCADQcAFakEYaiABQRhqKQAANwMAIANBwAVqQRBqIAFBEGopAAA3AwAgA0HABWpBCGogAUEIaikAADcDACADIAEpAAA3A8AFIANBmARqIANBwAVqENaFgIAAIAMpA5gEUA0AIANBKGogA0HIAWpBBmogA0HwAmpBBmogA0GgBGpBoAEQvJGAgABBoAEQvJGAgABBoAEQvJGAgAAaIANBwAVqIAIgACADQQhqENyFgIAAIANB8AJqIANBKGpBoAEQvJGAgAAaIANBmARqIANBwAVqQaABELyRgIAAGiADQcgBaiADQfACaiADQZgEahDghYCAACADQfACaiADQcgBahDehYCAACADQZgEahDXhYCAAEEEQQIgA0HwAmogA0GYBGoQ2IWAgABB/wFxQQFGGyEBDAELQQIhAQsgA0HgBmokgICAgAAgAQt2ACAAIAEpAAA3AAAgACABKQAgNwAgIABBGGogAUEYaikAADcAACAAQRBqIAFBEGopAAA3AAAgAEEIaiABQQhqKQAANwAAIABBKGogAUEoaikAADcAACAAQTBqIAFBMGopAAA3AAAgAEE4aiABQThqKQAANwAAC10AAkACQAJAAkAgAC0AAA4EAAECAwALIAFBssDBgABBEhDxkICAAA8LIAFBoMDBgABBEhDxkICAAA8LIAFBkMDBgABBEBDxkICAAA8LIAFB/r/BgABBEhDxkICAAAu9AgICfgR/IAAgACkDACIDIAKtQgOGfCIENwMAIABBCGoiBSAFKQMAIAQgA1StfDcDAAJAAkBBgAEgACgCUCIFayIGIAJLDQAgAEEQaiEHAkAgBUUNACAFQYEBTw0CIABB1ABqIgggBWogASAGELyRgIAAGiAAQQA2AlAgByAIQQEQzYWAgAAgASAGaiEBIAIgBmshAgsgByABIAJBB3YQzYWAgAAgAEHUAGogASACQYB/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ABC7kYCAACACQYAEaiAGQgBCm8rX2f7//wdCABC7kYCAACACQcAEaiADQgBC2sif49rW7gFCABC7kYCAACACQdADaiAFQgBC////////A0IAELuRgIAAIAJBkARqIAZCAEL/////////B0IAELuRgIAAIAJB0ARqIANCAEKbytfZ/v//B0IAELuRgIAAIAJBoARqIAZCAEL///////8DQgAQu5GAgAAgAkHgBGogA0IAQv////////8HQgAQu5GAgAAgAkHwBGogA0IAQv///////wNCABC7kYCAACACQeABaiACKQPwASIEQpv80ZKxtMcCfiIHQv////////8HgyIDQgBC7afX56XjmAFCABC7kYCAACACQdABaiADQgBCgcu1zvfF+gZCABC7kYCAACACQcABaiACKQPAAiIIIAIpA4ACfCIFIAIpA9ABfCIGIAQgAikD4AEiCXwiBEI0iCACQeABakEIaikDACACQfABakEIaikDAHwgBCAJVK18IgpCDIaEfCIJQpv80ZKxtMcCfiILQv////////8HgyIEQgBC7afX56XjmAFCABC7kYCAACACQZABaiADQgBC+b3TAEIAELuRgIAAIAJBsAFqIARCAEKBy7XO98X6BkIAELuRgIAAIAJBgAFqIAIpA9ACIgwgAikDkAJ8Ig0gAikDkAN8Ig4gAikDkAF8Ig8gAikDsAF8IhAgAikDwAEiESAJfCISQjSIIAJBwAFqQQhqKQMAIAJBwAJqQQhqKQMAIAJBgAJqQQhqKQMAfCAFIAhUrXwgAkHQAWpBCGopAwB8IAYgBVStfCAKQjSIfCAJIAZUrXx8IBIgEVStfCITQgyGhHwiBkKb/NGSsbTHAn4iFEL/////////B4MiBUIAQu2n1+el45gBQgAQu5GAgAAgAkGgAWogBEIAQvm90wBCABC7kYCAACACQfAAaiAFQgBCgcu1zvfF+gZCABC7kYCAACACQeAAaiACKQPgAiIVIAIpA6ACfCIJIAIpA6ADfCIIIAIpA+ADfCIKIAIpA6ABfCIRIAIpA3B8IhIgAikDgAEiFiAGfCIXQjSIIAJBgAFqQQhqKQMAIAJB0AJqQQhqKQMAIAJBkAJqQQhqKQMAfCANIAxUrXwgAkGQA2pBCGopAwB8IA4gDVStfCACQZABakEIaikDAHwgDyAOVK18IAJBsAFqQQhqKQMAfCAQIA9UrXwgE0I0iHwgBiAQVK18fCAXIBZUrXwiF0IMhoR8Ig1Cm/zRkrG0xwJ+IhhC/////////weDIgZCAELtp9fnpeOYAUIAELuRgIAAIAJBMGogBUIAQvm90wBCABC7kYCAACACQdAAaiAGQgBCgcu1zvfF+gZCABC7kYCAACACQSBqIAIpA/ACIhkgAikDsAJ8Ig4gAikDsAN8Ig8gAikD8AN8IhAgAikDsAR8IgwgB0IshnwiByACKQMwfCITIAIpA1B8IhYgAikDYCIaIA18IhtCNIggAkHgAGpBCGopAwAgAkHgAmpBCGopAwAgAkGgAmpBCGopAwB8IAkgFVStfCACQaADakEIaikDAHwgCCAJVK18IAJB4ANqQQhqKQMAfCAKIAhUrXwgAkGgAWpBCGopAwB8IBEgClStfCACQfAAakEIaikDAHwgEiARVK18IBdCNIh8IA0gElStfHwgGyAaVK18IhxCDIaEfCINQpv80ZKxtMcCfiIIQv////////8HgyIJQgBC7afX56XjmAFCABC7kYCAACACQcAAaiAGQgBC+b3TAEIAELuRgIAAIAJBEGogCUIAQoHLtc73xfoGQgAQu5GAgAAgAiAJQgBC+b3TAEIAELuRgIAAIAIgCEIshiIdIAIpA/AEfCIIIAIpA+AEIh4gAikDoAR8IgogGEIshnwiESACKQOQBCIfIAIpA9ADfCISIAIpA9AEfCIVIBRCLIZ8IhQgAikDAHwiFyACKQPAAyIgIAIpA4ADfCIYIAIpA4AEfCIaIAIpA8AEfCIbIAtCLIZ8IgsgAikDQHwiISACKQMQfCIiIAIpAyAiIyANfCIkQjSIIAJBIGpBCGopAwAgAkHwAmpBCGopAwAgAkGwAmpBCGopAwB8IA4gGVStfCACQbADakEIaikDAHwgDyAOVK18IAJB8ANqQQhqKQMAfCAQIA9UrXwgAkGwBGpBCGopAwB8IAwgEFStfCADQhSIfCAHIAxUrXwgAkEwakEIaikDAHwgEyAHVK18IAJB0ABqQQhqKQMAfCAWIBNUrXwgHEI0iHwgDSAWVK18fCAkICNUrXwiDUIMhoR8IgNCNIggAkHAA2pBCGopAwAgAkGAA2pBCGopAwB8IBggIFStfCACQYAEakEIaikDAHwgGiAYVK18IAJBwARqQQhqKQMAfCAbIBpUrXwgBEIUiHwgCyAbVK18IAJBwABqQQhqKQMAfCAhIAtUrXwgAkEQakEIaikDAHwgIiAhVK18IA1CNIh8IAMgIlStfCINQgyGhHwiBEI0iCACQZAEakEIaikDACACQdADakEIaikDAHwgEiAfVK18IAJB0ARqQQhqKQMAfCAVIBJUrXwgBUIUiHwgFCAVVK18IAJBCGopAwB8IBcgFFStfCANQjSIfCAEIBdUrXwiDUIMhoR8IgVCNIggAkHgBGpBCGopAwAgAkGgBGpBCGopAwB8IAogHlStfCAGQhSIfCARIApUrXwgDUI0iHwgBSARVK18Ig1CDIaEfCIGQjSIIAlCFIggAkHwBGpBCGopAwB8IAggHVStfCANQjSIfCAGIAhUrXxCDIaEIAVC/////////weDIARC/////////weDIANC/////////weDQpPYqJjanOd+fCIEQj+HfEL/tMqxiLqFeXwiBUI/h3xCh8Ksf3wiCUI/hyAGQv////////8Hg3wiBkI/h3xCgICAgICAfHwiDUI/hyIDQu2n1+el45gBgyAEQv////////8Hg3wiBEL/////////B4M3A6gFIAIgA0KBy7XO98X6BoMgBUL/////////B4N8IARCNIh8IgRC/////////weDNwOwBSACIANC+b3TAIMgCUL/////////B4N8IARCNIh8IgRC/////////weDNwO4BSACIARCNIggBkL/////////B4N8IgRC/////////weDNwPABSACIANCgICAgICABIMgDXwgBEI0iHxC/////////weDNwPIBSAAIAJBqAVqENGFgIAAIAJB0AVqJICAgIAACzoBAX8jgICAgABBMGsiAiSAgICAACACQQhqIAEQ1IWAgAAgACACQQhqENGFgIAAIAJBMGokgICAgAALowIBAn8jgICAgABBwABrIgIkgICAgABBACEDAkACQCABLAAfQQBIDQAgAkEYaiABQRhqKQAANwMAIAJBEGogAUEQaikAADcDACACQQhqIAFBCGopAAA3AwAgAiABKQAANwMAIAIgAi0AH0H/AHE6AB8gAkEgaiACEM6FgIAAQQEhAQNAIAIgA2otAAAgAkEgaiADai0AAEYQzI2AgAAgAXEhASADQQFqIgNBIEcNAAtBACEDAkAgARDMjYCAAEH/AXFBAUcNACAAIAIpAwA3AAEgAEEZaiACQRhqKQMANwAAIABBEWogAkEQaikDADcAACAAQQlqIAJBCGopAwA3AABBASEDCyAAIAM6AAAMAQsgAEEAOgAACyACQcAAaiSAgICAAAvgAgEEfiAAIAEpAyAiAjwAGiAAIAEpAxAiAzwADSAAIAEpAwAiBDwAACAAIAJCKIg8AB8gACACQiCIPAAeIAAgAkIYiDwAHSAAIAJCEIg8ABwgACACQgiIPAAbIAAgASkDGCICQiyIPAAZIAAgAkIkiDwAGCAAIAJCHIg8ABcgACACQhSIPAAWIAAgAkIMiDwAFSAAIAJCBIg8ABQgACADQiiIPAASIAAgA0IgiDwAESAAIANCGIg8ABAgACADQhCIPAAPIAAgA0IIiDwADiAAIAEpAwgiBUIsiDwADCAAIAVCJIg8AAsgACAFQhyIPAAKIAAgBUIUiDwACSAAIAVCDIg8AAggACAFQgSIPAAHIAAgBEIoiDwABSAAIARCIIg8AAQgACAEQhiIPAADIAAgBEIQiDwAAiAAIARCCIg8AAEgACACQgSGIANCMIiEPAATIAAgBUIEhiAEQjCIhDwABgvvFQIBfyF+I4CAgIAAQYAFayIDJICAgIAAIANB8AFqIAIpAwAiBEIAIAEpAwAiBUIAELuRgIAAIANBgAJqIAIpAwgiBkIAIAVCABC7kYCAACADQcACaiABKQMIIgdCACAEQgAQu5GAgAAgA0GQAmogAikDECIIQgAgBUIAELuRgIAAIANBgANqIAdCACAGQgAQu5GAgAAgA0HQAmogASkDECIJQgAgBEIAELuRgIAAIANBoAJqIAIpAxgiCkIAIAVCABC7kYCAACADQcADaiAIQgAgB0IAELuRgIAAIANBkANqIAlCACAGQgAQu5GAgAAgA0HgAmogASkDGCILQgAgBEIAELuRgIAAIANBsAJqIAIpAyAiDEIAIAVCABC7kYCAACADQdADaiAKQgAgB0IAELuRgIAAIANB8ANqIAlCACAIQgAQu5GAgAAgA0GgA2ogC0IAIAZCABC7kYCAACADQfACaiABKQMgIgVCACAEQgAQu5GAgAAgA0HgA2ogDEIAIAdCABC7kYCAACADQaAEaiAKQgAgCUIAELuRgIAAIANBgARqIAtCACAIQgAQu5GAgAAgA0GwA2ogBUIAIAZCABC7kYCAACADQbAEaiAMQgAgCUIAELuRgIAAIANBwARqIAtCACAKQgAQu5GAgAAgA0GQBGogBUIAIAhCABC7kYCAACADQeAEaiAMQgAgC0IAELuRgIAAIANB0ARqIAVCACAKQgAQu5GAgAAgA0HwBGogBUIAIAxCABC7kYCAACADQeABaiADKQPwASIFQpv80ZKxtMcCfiINQv////////8HgyIEQgBC7afX56XjmAFCABC7kYCAACADQdABaiAEQgBCgcu1zvfF+gZCABC7kYCAACADQcABaiADKQPAAiIOIAMpA4ACfCIGIAMpA9ABfCIHIAUgAykD4AEiCHwiBUI0iCADQeABakEIaikDACADQfABakEIaikDAHwgBSAIVK18Ig9CDIaEfCIIQpv80ZKxtMcCfiIQQv////////8HgyIFQgBC7afX56XjmAFCABC7kYCAACADQZABaiAEQgBC+b3TAEIAELuRgIAAIANBsAFqIAVCAEKBy7XO98X6BkIAELuRgIAAIANBgAFqIAMpA5ACIhEgAykDgAN8IgkgAykD0AJ8IgogAykDkAF8IgsgAykDsAF8IgwgAykDwAEiEiAIfCITQjSIIANBwAFqQQhqKQMAIANBwAJqQQhqKQMAIANBgAJqQQhqKQMAfCAGIA5UrXwgA0HQAWpBCGopAwB8IAcgBlStfCAPQjSIfCAIIAdUrXx8IBMgElStfCIUQgyGhHwiB0Kb/NGSsbTHAn4iFUL/////////B4MiBkIAQu2n1+el45gBQgAQu5GAgAAgA0GgAWogBUIAQvm90wBCABC7kYCAACADQfAAaiAGQgBCgcu1zvfF+gZCABC7kYCAACADQeAAaiADKQOQAyIWIAMpA8ADfCIIIAMpA6ACfCIOIAMpA+ACfCIPIAMpA6ABfCISIAMpA3B8IhMgAykDgAEiFyAHfCIYQjSIIANBgAFqQQhqKQMAIANBkAJqQQhqKQMAIANBgANqQQhqKQMAfCAJIBFUrXwgA0HQAmpBCGopAwB8IAogCVStfCADQZABakEIaikDAHwgCyAKVK18IANBsAFqQQhqKQMAfCAMIAtUrXwgFEI0iHwgByAMVK18fCAYIBdUrXwiGEIMhoR8IglCm/zRkrG0xwJ+IhlC/////////weDIgdCAELtp9fnpeOYAUIAELuRgIAAIANBMGogBkIAQvm90wBCABC7kYCAACADQdAAaiAHQgBCgcu1zvfF+gZCABC7kYCAACADQSBqIAMpA9ADIhogAykD8AN8IgogDUIshnwiCyADKQOgA3wiDCADKQOwAnwiDSADKQPwAnwiESADKQMwfCIUIAMpA1B8IhcgAykDYCIbIAl8IhxCNIggA0HgAGpBCGopAwAgA0GQA2pBCGopAwAgA0HAA2pBCGopAwB8IAggFlStfCADQaACakEIaikDAHwgDiAIVK18IANB4AJqQQhqKQMAfCAPIA5UrXwgA0GgAWpBCGopAwB8IBIgD1StfCADQfAAakEIaikDAHwgEyASVK18IBhCNIh8IAkgE1StfHwgHCAbVK18Ih1CDIaEfCIJQpv80ZKxtMcCfiIeQv////////8HgyIIQgBC7afX56XjmAFCABC7kYCAACADQcAAaiAHQgBC+b3TAEIAELuRgIAAIANBEGogCEIAQoHLtc73xfoGQgAQu5GAgAAgAyAIQgBC+b3TAEIAELuRgIAAIABC////////AyADKQPQBCIfIAMpA+AEfCIOIBlCLIZ8Ig8gAykDsAQiICADKQPABHwiEiADKQOQBHwiEyAVQiyGfCIVIAMpAwB8IhYgAykDgAQiISADKQOgBHwiGCADKQPgA3wiGSADKQOwA3wiGyAQQiyGfCIQIAMpA0B8IhwgAykDEHwiIiADKQMgIiMgCXwiJEI0iCADQSBqQQhqKQMAIANB0ANqQQhqKQMAIANB8ANqQQhqKQMAfCAKIBpUrXwgBEIUiHwgCyAKVK18IANBoANqQQhqKQMAfCAMIAtUrXwgA0GwAmpBCGopAwB8IA0gDFStfCADQfACakEIaikDAHwgESANVK18IANBMGpBCGopAwB8IBQgEVStfCADQdAAakEIaikDAHwgFyAUVK18IB1CNIh8IAkgF1StfHwgJCAjVK18IglCDIaEfCIEQjSIIANBgARqQQhqKQMAIANBoARqQQhqKQMAfCAYICFUrXwgA0HgA2pBCGopAwB8IBkgGFStfCADQbADakEIaikDAHwgGyAZVK18IAVCFIh8IBAgG1StfCADQcAAakEIaikDAHwgHCAQVK18IANBEGpBCGopAwB8ICIgHFStfCAJQjSIfCAEICJUrXwiCUIMhoR8IgVCNIggA0GwBGpBCGopAwAgA0HABGpBCGopAwB8IBIgIFStfCADQZAEakEIaikDAHwgEyASVK18IAZCFIh8IBUgE1StfCADQQhqKQMAfCAWIBVUrXwgCUI0iHwgBSAWVK18IglCDIaEfCIGQv////////8HgyAEQv////////8Hg0KT2KiY2pznfnwiCkI/hyAFQv////////8Hg3xC/7TKsYi6hXl8IgtCP4d8QofCrH98IgxCP4cgHkIshiISIAMpA/AEfCIEIAZCNIggA0HQBGpBCGopAwAgA0HgBGpBCGopAwB8IA4gH1StfCAHQhSIfCAPIA5UrXwgCUI0iHwgBiAPVK18IgZCDIaEfCIFQv////////8Hg3wiB0I/hyAFQjSIIAhCFIggA0HwBGpBCGopAwB8IAQgElStfCAGQjSIfCAFIARUrXxCDIaEfCIFfUI/iEJ/fCIEQu2n1+el45gBgyAKQv////////8Hg3wiBkL/////////B4M3AwAgACAEQoHLtc73xfoGgyALQv////////8Hg3wgBkI0iHwiBkL/////////B4M3AwggACAEQvm90wCDIAxC/////////weDfCAGQjSIfCIGQv////////8HgzcDECAAIAZCNIggB0L/////////B4N8IgZC/////////weDNwMYIAAgBSAEQoCAgICAgASDfCAGQjSIfEKAgICAgID8B3xC/////////weDNwMgIANBgAVqJICAgIAAC84CARN+IAExAB8hAiABMQAeIQMgATEAHSEEIAExABwhBSABMQAaIQYgATEAGyEHIAE1AAghCCABMQAMIQkgATEAByEKIAEzABghCyABMQAXIQwgATEAFiENIAExABQhDiABMQAVIQ8gATUAECEQIAExAA8hESABMQANIRIgATEADiETIAAgATUAACABMQAEQiCGhCABMQAFQiiGhCABMQAGQjCGhCIUQv////////8HgzcDACAAIBBCGIYgEkIohiATQjCGhCARQjiGhEIoiIRC/////////weDNwMQIAAgC0IkhiAQIA5CIIaEIA9CKIaEIA1CMIaEIAxCOIaEQhyIhDcDGCAAIAggCUIghoRCDIYgCkI4hiAUhEI0iIQ3AwggACALIAZCEIaEIAdCGIaEIAVCIIaEIARCKIaEIANCMIaEIAJCOIaEQhCINwMgC5ELBQF/K34BfwF+Cn8jgICAgABBgAFrIgIkgICAgAAgATEAJiEDIAExACUhBCABMQAkIQUgATEAIyEGIAExACEhByABMQAiIQggATEAICEJIAExAB8hCiABMQAeIQsgATEAHSEMIAExABwhDSABMQAaIQ4gATEAGyEPIAExAD8hECABMQA+IREgATEAPSESIAExADwhEyABMQA7IRQgATUAMCEVIAExAC8hFiABMQAuIRcgATMAOCEYIAExADohGSABMQA3IRogATEANiEbIAExADQhHCABMQA1IR0gATUACCEeIAExAAwhHyABMQAHISAgATEABiEhIAE1AAAhIiABMQAEISMgATEABSEkIAEzABghJSABMQAXISYgATEAFiEnIAExABQhKCABMQAVISkgATEAJyEqIAE1ACghKyABMQAsISwgATEALSEtIAJBCGpBEGoiLiABNQAQIi9CGIYgATEADUIohiABMQAOQjCGhCABMQAPQjiGhEIoiIRC/////////weDNwMAIAJBMGpBCGoiMCAqICsgLEIghoQgLUIohoQiK0IIhoRC/////////weDNwMAIAJBCGpBGGoiASAlQiSGIC8gKEIghoQgKUIohoQgJ0IwhoQgJkI4hoRCHIiENwMAIAJBCGpBCGoiMSAeIB9CIIaEQgyGICBCOIYgIiAjQiCGhCAkQiiGhCAhQjCGhCIehEI0iIQ3AwAgAkEwakEYaiIyIBggGUIQhoQiGEIghiAcQiCGIB1CKIaEIBtCMIaEIBpCOIaEQiCIhEL/////////B4M3AwAgAkEwakEQaiIzIBVCFIYgF0IwhiArhCAWQjiGhEIsiIQ3AwAgAkEwakEgaiI0IBRCGIYgGIQgE0IghoQgEkIohoQgEUIwhoQgEEI4hoRCFIg3AwAgAkEIakEgaiI1IAlCMIYgJSAOQhCGhCAPQhiGhCANQiCGhCAMQiiGhCALQjCGhCAKQjiGhEIQiIRC/////////weDNwMAIAIgHkL/////////B4M3AwggAiAJIAdCCIaEIAhCEIaEIAZCGIaEIAVCIIaEIARCKIaEIANCMIaEQgSINwMwIAJB2ABqIAJBCGpBuMLBgAAQ0oWAgAAgNSACQdgAakEgaiI2KQMANwMAIAEgAkHYAGpBGGoiNykDADcDACAuIAJB2ABqQRBqIjgpAwA3AwAgMSACQdgAakEIaiI5KQMANwMAIAIgAikDWDcDCCACQdgAaiACQTBqQeDCwYAAENKFgIAAIDQgNikDACIJNwMAIDIgNykDACIlNwMAIDMgOCkDACIDNwMAIDAgOSkDACIENwMAIAIgAikDWCIFNwMwIABC7afX56XjmAFCACADIC4pAwB8IAQgBSACKQMIfCIDQjSIfCAxKQMAfCIEQjSIfCIFQv////////8HgyADQv////////8Hg0KT2KiY2pznfnwiA0I/hyAEQv////////8Hg3xC/7TKsYi6hXl8IgRCP4d8QofCrH98IgZCP4cgJSABKQMAfCAFQjSIfCIlQv////////8Hg3wiBUI/hyAJIDUpAwB8ICVCNIh8Qv////////8Hg3wiCUKAgICAgIAEUyIBGyADQv////////8Hg3wiJUL/////////B4M3AwAgAEKBy7XO98X6BkIAIAEbIARC/////////weDfCAlQjSIfCIlQv////////8HgzcDCCAAQvm90wBCACABGyAGQv////////8Hg3wgJUI0iHwiJUL/////////B4M3AxAgACAlQjSIIAVC/////////weDfCIlQv////////8HgzcDGCAAIAkgAa1CLIZ8ICVCNIh8QoCAgICAgPwHfEL/////////B4M3AyAgAkGAAWokgICAgAAL6w4FAX8BfgN/AX4IfyOAgICAAEGAFGsiBCSAgICAACAEQQhqQQBBgAIQuZGAgAAaIARBiARqQQhqIAFBCGopAAA3AwAgBEGIBGpBEGogAUEQaikAADcDACAEQYgEakEYaiABQRhqKQAANwMAQgAhBSAEQgA3A6gEIAQgASkAADcDiARBACEBA0BBACABayEGAkADQCABQQZ2IQcCQAJAIAFBP3EiCEE6Sw0AIARBiARqIAdBA3RqKQMAIAitiCEJDAELIARBiARqIAdBA3RqIgdBCGopAwAgBkE/ca2GIAcpAwAgCK2IhCEJCwJAIAlCH4MgBXwiCUIBg1BFDQAgBkF/aiEGIAFBAWoiAUGAAkcNAQwCCwsgBEEIaiABakEAQWAgCUIQVBsgCadqOgAAIAlCD1atIQUgAUEFaiIBQYACSQ0BCwsgBEGIAmpBAEGAAhC5kYCAABogBEGIBGpBCGogA0EIaikAADcDACAEQYgEakEQaiADQRBqKQAANwMAIARBiARqQRhqIANBGGopAAA3AwBCACEFIARCADcDqAQgBCADKQAANwOIBEEAIQEDQEEAIAFrIQYCQANAIAFBBnYhBwJAAkAgAUE/cSIIQTdLDQAgBEGIBGogB0EDdGopAwAgCK2IIQkMAQsgBEGIBGogB0EDdGoiB0EIaikDACAGQT9xrYYgBykDACAIrYiEIQkLAkAgCUL/AYMgBXwiCUIBg1BFDQAgBkF/aiEGIAFBAWoiAUGAAkcNAQwCCwsgBEGIAmogAWogCTwAACAJQv8AVq0hBSABQQhqIgFBgAJJDQELC0H/ASEGAkADQCAEQQhqIAYiAWotAAANASAEQYgCaiABai0AAA0BIAFBf2ohBiABDQALCyAEQYgEaiACEOeFgIAAIARBqA5qQgA3AwAgBEGIDmpBGGpCADcDACAEQYgOakEQakIANwMAIARBkA5qQgA3AwAgBEG4DmpCADcDACAEQcAOakIANwMAIARByA5qQgA3AwAgBEHQDmpCADcDACAEQeAOakIANwMAIARB6A5qQgA3AwAgBEHwDmpCADcDACAEQfgOakIANwMAIARCADcDiA4gBEIBNwOwDiAEQgE3A9gOIARB4BJqQdAAaiECIARB4BJqQShqIQogBEHgEmpB+ABqIQsgBEHAEWpB+ABqIQwgBEHAEWpB0ABqIQ0gBEHAEWpBKGohDiAEQYAPakHQAGohBiAEQYAPakEoaiEIIARBgA9qQfgAaiEHIARBiA5qQdAAaiEPIARBiA5qQShqIRADQCAEQYAPaiAEQYgOahDohYCAAAJAAkACQAJAAkACQCAEQQhqIAFqLAAAIgNBAUgNACAEQcARaiAEQYAPaiAHEOSFgIAAIA4gCCAGEOSFgIAAIA0gBiAHEOSFgIAAIAwgBEGAD2ogCBDkhYCAACADQf4BcUEBdiERIANBEE8NAiAEQeASaiAEQYgEaiARQaABbGpBoAEQvJGAgAAaIARBoBBqIARBwBFqIARB4BJqENmFgIAAIARBgA9qIARBoBBqQaABELyRgIAAGgwBCyADQX9KDQAgBEHAEWogBEGAD2ogBxDkhYCAACAOIAggBhDkhYCAACANIAYgBxDkhYCAACAMIARBgA9qIAgQ5IWAgABBACADayIDQRh0QRh1QQF2IREgA0H/AXFBEE8NAiAEQeASaiAEQYgEaiARQaABbGpBoAEQvJGAgAAaIARBoBBqIARBwBFqIARB4BJqENqFgIAAIARBgA9qIARBoBBqQaABELyRgIAAGgsCQCAEQYgCaiABaiwAACIDQQFIDQAgBEHgEmogBEGAD2ogBxDkhYCAACAKIAggBhDkhYCAACACIAYgBxDkhYCAACALIARBgA9qIAgQ5IWAgAAgBEGgEGogA0H+AXFBAXZB+ABsQYjDwYAAakH4ABC8kYCAABogBEHAEWogBEHgEmogBEGgEGoQ3YWAgAAgBEGAD2ogBEHAEWpBoAEQvJGAgAAaDAQLIANBf0oNAyAEQeASaiAEQYAPaiAHEOSFgIAAIAogCCAGEOSFgIAAIAIgBiAHEOSFgIAAIAsgBEGAD2ogCBDkhYCAAEEAIANrQRh0QRh1IgNBAXYhESADQX9MDQIgBEGgEGogEUH4AGxBiMPBgABqQfgAELyRgIAAGiAEQcARaiAEQeASaiAEQaAQahDfhYCAACAEQYAPaiAEQcARakGgARC8kYCAABoMAwsgEUEIQeCAwoAAELeQgIAAAAsgEUEIQeCAwoAAELeQgIAAAAsgEUHAAEHwgMKAABC3kICAAAALIARB4BJqIARBgA9qIAcQ5IWAgAAgCiAIIAYQ5IWAgAAgAiAGIAcQ5IWAgAAgBEGIDmogBEHgEmpB+AAQvJGAgAAaAkAgAQ0AIAAgBEGIDmogDxDkhYCAACAAQShqIBAgDxDkhYCAACAAQdAAaiAPQQEQ44WAgAAgAEH4AGogBEGIDmogEBDkhYCAACAEQYAUaiSAgICAAA8LIAFBf2ohAQwACwvmBwQBfwJ+CH8GfiOAgICAAEHwAmsiAiSAgICAACACQQhqIAEQ5oWAgAAgAkEwaiACQQhqQQEQ44WAgAAgAiACKQNQQvD///////8/fCIDQv////////8DgyACKQNIQvD///////8/fCIEQjOIfDcDeCACIARC/////////wODIAIpA0BC8P///////z98IgRCM4h8NwNwIAIgBEL/////////A4MgAikDOELw////////P3wiBEIziHw3A2ggAiAEQv////////8DgyACKQMwQs/9//////8/fCIEQjOIfDcDYCACIANCM4hCE34gBEL/////////A4N8NwNYIAJBgAFqIAJBMGpBiP/BgAAQ5IWAgAAgAiACKQOAAUIBfDcDgAEgAkHQAWogAkHYAGogAkGAAWoQ5YWAgAAgAi0A0AEhBSACQagBakEgaiIGIAJB+AFqKQMANwMAIAJBqAFqQRhqIgcgAkHQAWpBIGoiCCkDADcDACACQagBakEQaiIJIAJB0AFqQRhqIgopAwA3AwAgAkGoAWpBCGoiCyACQdABakEQaiIMKQMANwMAIAIgAikD2AE3A6gBAkACQCAFQQFHDQAgAS0AH0EHdhDMjYCAACEBIAYgBikDACIEQvD///////8/IAR9Ig1C/////////wODQvD///////8/IAcpAwAiDn0iD0IziHyFQgAgAa1C/wGDfSIDgyAEhSIQNwMAIAcgDiAOIA9C/////////wODQvD///////8/IAkpAwAiBH0iD0IziHyFIAODhSIRNwMAIAkgBCAEIA9C/////////wODQvD///////8/IAspAwAiDn0iD0IziHyFIAODhSISNwMAIAsgDiAOIA9C/////////wODQtD9//////8/IAIpA6gBIgR9Ig9CM4h8hSADg4UiDjcDACACIAQgBCANQjOIQhN+IA9C/////////wODfIUgA4OFIgM3A6gBIAggEDcDACAKIBE3AwAgDCASNwMAIAJB0AFqQQhqIA43AwAgAkGAAmogAkEIakEIaikDADcDACACQYgCaiACQQhqQRBqKQMANwMAIAJBkAJqIAJBCGpBGGopAwA3AwAgAkGYAmogAkEIakEgaikDADcDACACQcACakIANwMAIAJBuAJqQgA3AwAgAkGwAmpCADcDACACQagCakIANwMAIAIgAzcD0AEgAiACKQMINwP4ASACQgE3A6ACIAJByAJqIAJBqAFqIAJBCGoQ5IWAgAAgAEEIaiACQdABakGgARC8kYCAABogAEIBNwMADAELIABCADcDAAsgAkHwAmokgICAgAALewAgAEIANwMAIABCATcDKCAAQgE3A1AgAEEgakIANwMAIABBGGpCADcDACAAQRBqQgA3AwAgAEEIakIANwMAIABBMGpCADcDACAAQThqQgA3AwAgAEHAAGpCADcDACAAQcgAakIANwMAIABB2ABqQQBByAAQuZGAgAAaC8cCAQZ/I4CAgIAAQeABayICJICAgIAAIAIgACABQdAAaiIDEOSFgIAAIAJBKGogASAAQdAAaiIEEOSFgIAAIAJB0ABqIAIQ4YWAgAAgAkH4AGogAkEoahDhhYCAAEEAIQVBASEGA0AgAkHQAGogBWotAAAgAkH4AGogBWotAABGEMyNgIAAIAZxIQYgBUEBaiIFQSBHDQALIAYQzI2AgAAhByACQdAAaiAAQShqIAMQ5IWAgAAgAkH4AGogAUEoaiAEEOSFgIAAIAJBoAFqIAJB0ABqEOGFgIAAIAJBwAFqIAJB+ABqEOGFgIAAQQAhBUEBIQYDQCACQaABaiAFai0AACACQcABaiAFai0AAEYQzI2AgAAgBnEhBiAFQQFqIgVBIEcNAAsgBhDMjYCAACAHcRDMjYCAACEFIAJB4AFqJICAgIAAIAULpgkIAn8BfgF/AX4BfwF+AX8HfiOAgICAAEHwAWsiAySAgICAACADQQhqIAFBMGoiBCkDACABKQMIIgV8NwMAIANBEGogAUE4aiIGKQMAIAEpAxAiB3w3AwAgA0EYaiABQcAAaiIIKQMAIAEpAxgiCXw3AwAgA0EgaiABQcgAaiIKKQMAIAEpAyAiC3w3AwAgAyABKQMoIAEpAwAiDHw3AwAgAyAKKQMAIAt9QvD///////8/fCILQv////////8DgyAIKQMAIAl9QvD///////8/fCIJQjOIfDcDSCADIAlC/////////wODIAYpAwAgB31C8P///////z98IgdCM4h8NwNAIAMgB0L/////////A4MgBCkDACAFfULw////////P3wiBUIziHw3AzggAyAFQv////////8DgyABKQMoIAx9QtD9//////8/fCIFQjOIfDcDMCADIAtCM4hCE34gBUL/////////A4N8NwMoIANB0ABqIAMgAhDkhYCAACADQfgAaiADQShqIAJBKGoQ5IWAgAAgA0GgAWogAUH4AGogAkH4AGoQ5IWAgAAgA0HIAWogAUHQAGogAkHQAGoQ5IWAgAAgACADQdAAakEgaiIBKQMAIAMpA5gBIgV9QvD///////8/fCIHQv////////8DgyADQdAAakEYaiICKQMAIAMpA5ABIgl9QvD///////8/fCILQjOIfDcDICAAIAtC/////////wODIANB0ABqQRBqIgQpAwAgAykDiAEiC31C8P///////z98IgxCM4h8NwMYIAAgDEL/////////A4MgA0HQAGpBCGoiBikDACADKQOAASIMfULw////////P3wiDUIziHw3AxAgACANQv////////8DgyADKQNQIAMpA3giDX1C0P3//////z98Ig5CM4h8NwMIIAAgB0IziEITfiAOQv////////8Dg3w3AwAgAykD6AEhByADKQPgASEOIAMpA9gBIQ8gAykD0AEhECADKQPIASERIAAgDSADKQNQfDcDKCAAQTBqIAwgBikDAHw3AwAgAEE4aiALIAQpAwB8NwMAIABBwABqIAkgAikDAHw3AwAgAEHIAGogBSABKQMAfDcDACAAIAMpA6ABIgkgEUIBhiILfDcDUCAAQdgAaiAQQgGGIgwgAykDqAEiDXw3AwAgAEHgAGogD0IBhiIPIAMpA7ABIhB8NwMAIABB6ABqIA5CAYYiDiADKQO4ASIRfDcDACADKQPAASEFIABBiAFqIA8gEH1C8P///////z98Ig9C/////////wODIAwgDX1C8P///////z98IgxCM4h8NwMAIABBgAFqIAxC/////////wODIAsgCX1C0P3//////z98IglCM4h8NwMAIABBkAFqIA4gEX1C8P///////z98IgtC/////////wODIA9CM4h8NwMAIABB8ABqIAUgB0IBhiIHfDcDACAAQZgBaiAHIAV9QvD///////8/fCIFQv////////8DgyALQjOIfDcDACAAIAVCM4hCE34gCUL/////////A4N8NwN4IANB8AFqJICAgIAAC6wJCAJ/AX4BfwF+AX8BfgF/CH4jgICAgABB8AFrIgMkgICAgAAgA0EIaiABQTBqIgQpAwAgASkDCCIFfDcDACADQRBqIAFBOGoiBikDACABKQMQIgd8NwMAIANBGGogAUHAAGoiCCkDACABKQMYIgl8NwMAIANBIGogAUHIAGoiCikDACABKQMgIgt8NwMAIAMgASkDKCABKQMAIgx8NwMAIAMgCikDACALfULw////////P3wiC0L/////////A4MgCCkDACAJfULw////////P3wiCUIziHw3A0ggAyAJQv////////8DgyAGKQMAIAd9QvD///////8/fCIHQjOIfDcDQCADIAdC/////////wODIAQpAwAgBX1C8P///////z98IgVCM4h8NwM4IAMgBUL/////////A4MgASkDKCAMfULQ/f//////P3wiBUIziHw3AzAgAyALQjOIQhN+IAVC/////////wODfDcDKCADQdAAaiADIAJBKGoQ5IWAgAAgA0H4AGogA0EoaiACEOSFgIAAIANBoAFqIAFB+ABqIAJB+ABqEOSFgIAAIANByAFqIAFB0ABqIAJB0ABqEOSFgIAAIAAgA0HQAGpBIGoiASkDACADKQOYASIFfULw////////P3wiB0L/////////A4MgA0HQAGpBGGoiAikDACADKQOQASIJfULw////////P3wiC0IziHw3AyAgACALQv////////8DgyADQdAAakEQaiIEKQMAIAMpA4gBIgt9QvD///////8/fCIMQjOIfDcDGCAAIAxC/////////wODIANB0ABqQQhqIgYpAwAgAykDgAEiDH1C8P///////z98Ig1CM4h8NwMQIAAgDUL/////////A4MgAykDUCADKQN4Ig19QtD9//////8/fCIOQjOIfDcDCCAAIAdCM4hCE34gDkL/////////A4N8NwMAIAMpA8gBIQ4gAykD0AEhDyADKQPYASEQIAMpA+ABIREgAykD6AEhEiAAIA0gAykDUHw3AyggAEEwaiAMIAYpAwB8NwMAIABBOGogCyAEKQMAfDcDACAAQcAAaiAJIAIpAwB8NwMAIABByABqIAUgASkDAHw3AwAgAykDoAEhBSADKQOoASEHIAMpA7ABIQkgAykDuAEhCyAAQZgBaiASQgGGIgwgAykDwAEiDXw3AwAgAEGQAWogCyARQgGGIhF8NwMAIABBiAFqIAkgEEIBhiIQfDcDACAAQYABaiAHIA9CAYYiD3w3AwAgACAFIA5CAYYiDnw3A3ggAEHwAGogDCANfULw////////P3wiDEL/////////A4MgESALfULw////////P3wiC0IziHw3AwAgAEHoAGogC0L/////////A4MgECAJfULw////////P3wiCUIziHw3AwAgAEHgAGogCUL/////////A4MgDyAHfULw////////P3wiB0IziHw3AwAgAEHYAGogB0L/////////A4MgDiAFfULQ/f//////P3wiBUIziHw3AwAgACAMQjOIQhN+IAVC/////////wODfDcDUCADQfABaiSAgICAAAuoBQMDfgR/An4gACABKQMoNwMoIABBMGogAUEwaikDADcDACAAQThqIAFBOGopAwA3AwAgAEHAAGogAUHAAGopAwA3AwAgAEHIAGogAUHIAGopAwA3AwAgAEEIakLw////////PyABQQhqKQMAfSICQv////////8Dg0LQ/f//////PyABKQMAfSIDQjOIfDcDACAAQRBqQvD///////8/IAFBEGopAwB9IgRC/////////wODIAJCM4h8NwMAIABBGGpC8P///////z8gAUEYaikDAH0iAkL/////////A4MgBEIziHw3AwAgAEEgakLw////////PyABQSBqKQMAfSIEQv////////8DgyACQjOIfDcDACAAIARCM4hCE34gA0L/////////A4N8NwMAIABB8ABqIAFB8ABqKQMANwMAIABB6ABqIAFB6ABqKQMANwMAIABB4ABqIAFB4ABqKQMANwMAIABB2ABqIAFB2ABqKQMANwMAIAAgASkDUDcDUCAAQZgBaiIFIAFBmAFqKQMANwMAIABBkAFqIgYgAUGQAWopAwA3AwAgAEGIAWoiByABQYgBaikDADcDACAAQYABaiIIIAFBgAFqKQMANwMAIAAgASkDeDcDeCAIKQMAIQIgBykDACEDIAApA3ghBCAFQvD///////8/IAUpAwB9IglC/////////wODQvD///////8/IAYpAwB9IgpCM4h8NwMAIAYgCkL/////////A4NC8P///////z8gA30iA0IziHw3AwAgByADQv////////8Dg0Lw////////PyACfSICQjOIfDcDACAIIAJC/////////wODQtD9//////8/IAR9IgJCM4h8NwMAIAAgCUIziEITfiACQv////////8Dg3w3A3gLEAAgACABIAIgAxDVhYCAAAupCQgCfwF+AX8BfgF/AX4Bfwd+I4CAgIAAQdABayIDJICAgIAAIANBCGpBCGogAUEwaiIEKQMAIAEpAwgiBXw3AwAgA0EIakEQaiABQThqIgYpAwAgASkDECIHfDcDACADQQhqQRhqIAFBwABqIggpAwAgASkDGCIJfDcDACADQQhqQSBqIAFByABqIgopAwAgASkDICILfDcDACADIAEpAyggASkDACIMfDcDCCADIAopAwAgC31C8P///////z98IgtC/////////wODIAgpAwAgCX1C8P///////z98IglCM4h8NwNQIAMgCUL/////////A4MgBikDACAHfULw////////P3wiB0IziHw3A0ggAyAHQv////////8DgyAEKQMAIAV9QvD///////8/fCIFQjOIfDcDQCADIAVC/////////wODIAEpAyggDH1C0P3//////z98IgVCM4h8NwM4IAMgC0IziEITfiAFQv////////8Dg3w3AzAgA0HYAGogA0EIaiACEOSFgIAAIANBgAFqIANBMGogAkEoahDkhYCAACADQagBaiABQfgAaiACQdAAahDkhYCAACAAIANB2ABqQSBqIgIpAwAgAykDoAEiBX1C8P///////z98IgdC/////////wODIANB2ABqQRhqIgQpAwAgAykDmAEiCX1C8P///////z98IgtCM4h8NwMgIAAgC0L/////////A4MgA0HYAGpBEGoiBikDACADKQOQASILfULw////////P3wiDEIziHw3AxggACAMQv////////8DgyADQdgAakEIaiIIKQMAIAMpA4gBIgx9QvD///////8/fCINQjOIfDcDECAAIA1C/////////wODIAMpA1ggAykDgAEiDX1C0P3//////z98Ig5CM4h8NwMIIAAgB0IziEITfiAOQv////////8Dg3w3AwAgAUHwAGopAwAhByABQegAaikDACEOIAFB4ABqKQMAIQ8gAUHYAGopAwAhECABKQNQIREgACANIAMpA1h8NwMoIABBMGogDCAIKQMAfDcDACAAQThqIAsgBikDAHw3AwAgAEHAAGogCSAEKQMAfDcDACAAQcgAaiAFIAIpAwB8NwMAIAAgAykDqAEiCSARQgGGIgt8NwNQIABB2ABqIBBCAYYiDCADKQOwASINfDcDACAAQeAAaiAPQgGGIg8gAykDuAEiEHw3AwAgAEHoAGogDkIBhiIOIAMpA8ABIhF8NwMAIAMpA8gBIQUgAEGIAWogDyAQfULw////////P3wiD0L/////////A4MgDCANfULw////////P3wiDEIziHw3AwAgAEGAAWogDEL/////////A4MgCyAJfULQ/f//////P3wiCUIziHw3AwAgAEGQAWogDiARfULw////////P3wiC0L/////////A4MgD0IziHw3AwAgAEHwAGogBSAHQgGGIgd8NwMAIABBmAFqIAcgBX1C8P///////z98IgVC/////////wODIAtCM4h8NwMAIAAgBUIziEITfiAJQv////////8Dg3w3A3ggA0HQAWokgICAgAALmwUBBX8jgICAgABBwANrIgIkgICAgAAgAkGoAWpBIGogAUEgaikDADcDACACQagBakEYaiABQRhqKQMANwMAIAJBqAFqQRBqIAFBEGopAwA3AwAgAkGoAWpBCGogAUEIaikDADcDACACQagBakEwaiABQTBqKQMANwMAIAJBqAFqQThqIAFBOGopAwA3AwAgAkGoAWpBwABqIAFBwABqKQMANwMAIAJBqAFqQcgAaiABQcgAaikDADcDACACIAEpAwA3A6gBIAIgASkDKDcD0AEgAkGoAWpB8ABqIAFB8ABqKQMANwMAIAJBqAFqQegAaiABQegAaikDADcDACACQagBakHgAGogAUHgAGopAwA3AwAgAkGoAWpB2ABqIAFB2ABqKQMANwMAIAIgASkDUDcD+AEgAkGgAmogAkGoAWoQ6IWAgAAgAkEIaiACQaACakGgARC8kYCAABogAkGgAmogAkEIaiACQQhqQfgAaiIBEOSFgIAAIAJBoAJqQShqIgMgAkEIakEoaiIEIAJBCGpB0ABqIgUQ5IWAgAAgAkGgAmpB0ABqIgYgBSABEOSFgIAAIAJBqAFqIAJBoAJqQfgAELyRgIAAGiACQaACaiACQagBahDohYCAACACQQhqIAJBoAJqQaABELyRgIAAGiACQaACaiACQQhqIAEQ5IWAgAAgAyAEIAUQ5IWAgAAgBiAFIAEQ5IWAgAAgAkGoAWogAkGgAmpB+AAQvJGAgAAaIAJBoAJqIAJBqAFqEOiFgIAAIAAgAkGgAmogAkGgAmpB+ABqIgEQ5IWAgAAgAEEoaiADIAYQ5IWAgAAgAEHQAGogBiABEOSFgIAAIABB+ABqIAJBoAJqIAMQ5IWAgAAgAkHAA2okgICAgAALrwkIAn8BfgF/AX4BfwF+AX8IfiOAgICAAEHQAWsiAySAgICAACADQQhqQQhqIAFBMGoiBCkDACABKQMIIgV8NwMAIANBCGpBEGogAUE4aiIGKQMAIAEpAxAiB3w3AwAgA0EIakEYaiABQcAAaiIIKQMAIAEpAxgiCXw3AwAgA0EIakEgaiABQcgAaiIKKQMAIAEpAyAiC3w3AwAgAyABKQMoIAEpAwAiDHw3AwggAyAKKQMAIAt9QvD///////8/fCILQv////////8DgyAIKQMAIAl9QvD///////8/fCIJQjOIfDcDUCADIAlC/////////wODIAYpAwAgB31C8P///////z98IgdCM4h8NwNIIAMgB0L/////////A4MgBCkDACAFfULw////////P3wiBUIziHw3A0AgAyAFQv////////8DgyABKQMoIAx9QtD9//////8/fCIFQjOIfDcDOCADIAtCM4hCE34gBUL/////////A4N8NwMwIANB2ABqIANBCGogAkEoahDkhYCAACADQYABaiADQTBqIAIQ5IWAgAAgA0GoAWogAUH4AGogAkHQAGoQ5IWAgAAgACADQdgAakEgaiICKQMAIAMpA6ABIgV9QvD///////8/fCIHQv////////8DgyADQdgAakEYaiIEKQMAIAMpA5gBIgl9QvD///////8/fCILQjOIfDcDICAAIAtC/////////wODIANB2ABqQRBqIgYpAwAgAykDkAEiC31C8P///////z98IgxCM4h8NwMYIAAgDEL/////////A4MgA0HYAGpBCGoiCCkDACADKQOIASIMfULw////////P3wiDUIziHw3AxAgACANQv////////8DgyADKQNYIAMpA4ABIg19QtD9//////8/fCIOQjOIfDcDCCAAIAdCM4hCE34gDkL/////////A4N8NwMAIAFB2ABqKQMAIQ4gAUHgAGopAwAhDyABQegAaikDACEQIAFB8ABqKQMAIREgASkDUCESIAAgDSADKQNYfDcDKCAAQTBqIAwgCCkDAHw3AwAgAEE4aiALIAYpAwB8NwMAIABBwABqIAkgBCkDAHw3AwAgAEHIAGogBSACKQMAfDcDACADKQOoASEFIAMpA7ABIQcgAykDuAEhCSADKQPAASELIABBmAFqIBFCAYYiDCADKQPIASINfDcDACAAQZABaiALIBBCAYYiEHw3AwAgAEGIAWogCSAPQgGGIg98NwMAIABBgAFqIAcgDkIBhiIOfDcDACAAIAUgEkIBhiIRfDcDeCAAQfAAaiAMIA19QvD///////8/fCIMQv////////8DgyAQIAt9QvD///////8/fCILQjOIfDcDACAAQegAaiALQv////////8DgyAPIAl9QvD///////8/fCIJQjOIfDcDACAAQeAAaiAJQv////////8DgyAOIAd9QvD///////8/fCIHQjOIfDcDACAAQdgAaiAHQv////////8DgyARIAV9QtD9//////8/fCIFQjOIfDcDACAAIAxCM4hCE34gBUL/////////A4N8NwNQIANB0AFqJICAgIAAC+QEAwF/Cn4BfyOAgICAAEHAAmsiAySAgICAACADQagBaiACQTBqKQMAIgQgAikDCCIFfDcDACADQbABaiACQThqKQMAIgYgAikDECIHfDcDACADQbgBaiACQcAAaikDACIIIAIpAxgiCXw3AwAgA0HAAWogAkHIAGopAwAiCiACKQMgIgt8NwMAIANBoAFqQTBqIAQgBX1C8P///////z98IgRC/////////wODIAIpAygiBSACKQMAIgx9QtD9//////8/fCINQjOIfDcDACADQaABakE4aiAGIAd9QvD///////8/fCIGQv////////8DgyAEQjOIfDcDACADQaABakHAAGogCCAJfULw////////P3wiBEL/////////A4MgBkIziHw3AwAgA0GgAWpByABqIAogC31C8P///////z98IgZC/////////wODIARCM4h8NwMAIAMgBSAMfDcDoAEgAyAGQjOIQhN+IA1C/////////wODfDcDyAEgA0GgAWpB8ABqIAJB8ABqKQMANwMAIANBoAFqQegAaiACQegAaikDADcDACADQaABakHgAGogAkHgAGopAwA3AwAgA0GgAWpB2ABqIAJB2ABqKQMANwMAIAMgAikDUDcD8AEgA0GgAWpB+ABqIAJB+ABqQbD/wYAAEOSFgIAAIAMgASADQaABahDahYCAACAAIAMgA0H4AGoiAhDkhYCAACAAQShqIANBKGoiASADQdAAaiIOEOSFgIAAIABB0ABqIA4gAhDkhYCAACAAQfgAaiADIAEQ5IWAgAAgA0HAAmokgICAgAALwAQBBn4gACABKQMgIgJCM4hCE34gASkDACIDQv////////8Dg3wiBEITfEIziCABKQMIIgVC/////////wODIANCM4h8IgN8QjOIIAEpAxAiBkL/////////A4MgBUIziHwiBXxCM4ggASkDGCIHQv////////8DgyAGQjOIfCIGfEIziCACQv////////8DgyAHQjOIfCIHfEIziEITfiAEfCICPAAAIAAgAkIoiDwABSAAIAJCIIg8AAQgACACQhiIPAADIAAgAkIQiDwAAiAAIAJCCIg8AAEgACACQjOIIAN8IgNCJYg8AAsgACADQh2IPAAKIAAgA0IViDwACSAAIANCDYg8AAggACADQgWIPAAHIAAgA0IDhiACQjCIQgeDhDwABiAAIANCM4ggBXwiAkIqiDwAEiAAIAJCIog8ABEgACACQhqIPAAQIAAgAkISiDwADyAAIAJCCog8AA4gACACQgKIPAANIAAgAkIGhiADQoCAgICAgPgDg0ItiIQ8AAwgACACQjOIIAZ8IgNCJ4g8ABggACADQh+IPAAXIAAgA0IXiDwAFiAAIANCD4g8ABUgACADQgeIPAAUIAAgA0IBhiACQoCAgICAgIACg0IyiIQ8ABMgACADQjOIIAd8IgJCJIg8AB4gACACQhyIPAAdIAAgAkIUiDwAHCAAIAJCDIg8ABsgACACQgSIPAAaIAAgAkKAgICAgID8A4NCLIg8AB8gACACQgSGIANCgICAgICA4AODQi+IhDwAGQuvBAEBfyOAgICAAEGABmsiAiSAgICAACACQQhqIAFBARDjhYCAACACQdgFaiACQQhqQQEQ44WAgAAgAkEwaiACQdgFakEBEOOFgIAAIAJB2ABqIAEgAkEwahDkhYCAACACQYABaiACQQhqIAJB2ABqEOSFgIAAIAJBqAFqIAJBgAFqQQEQ44WAgAAgAkHQAWogAkHYAGogAkGoAWoQ5IWAgAAgAkH4AWogAkHQAWpBBRDjhYCAACACQaACaiACQfgBaiACQdABahDkhYCAACACQcgCaiACQaACakEKEOOFgIAAIAJB8AJqIAJByAJqIAJBoAJqEOSFgIAAIAJBmANqIAJB8AJqQRQQ44WAgAAgAkHAA2ogAkGYA2ogAkHwAmoQ5IWAgAAgAkHoA2ogAkHAA2pBChDjhYCAACACQZAEaiACQegDaiACQaACahDkhYCAACACQbgEaiACQZAEakEyEOOFgIAAIAJB4ARqIAJBuARqIAJBkARqEOSFgIAAIAJBiAVqIAJB4ARqQeQAEOOFgIAAIAJBsAVqIAJBiAVqIAJB4ARqEOSFgIAAIAJB2AVqIAJBsAVqQTIQ44WAgAAgACACQdgFaiACQZAEahDkhYCAACAAQcgAaiACQaABaikDADcDACAAQcAAaiACQZgBaikDADcDACAAQThqIAJBkAFqKQMANwMAIABBMGogAkGIAWopAwA3AwAgACACKQOAATcDKCACQYAGaiSAgICAAAuJCAIBfxR+I4CAgIAAQfABayIDJICAgIAAIAEpAyAhBCABKQMYIQUgASkDECEGIAEpAwghByABKQMAIQgDQCADQbABaiAIQgAgCEIAELuRgIAAIANBgAFqIAdCACAEQhN+IglCABC7kYCAACADQcAAaiAGQgAgBUITfiIKQgAQu5GAgAAgA0HgAWogCkIAIAVCABC7kYCAACADQfAAaiAIQgAgB0IAELuRgIAAIANBMGogBkIAIAlCABC7kYCAACADQeAAaiAHQgAgB0IAELuRgIAAIANBIGogCEIAIAZCABC7kYCAACADQdABaiAKQgAgBEIAELuRgIAAIANBwAFqIAlCACAEQgAQu5GAgAAgA0GgAWogCEIAIAVCABC7kYCAACADQRBqIAdCACAGQgAQu5GAgAAgAyAGQgAgBkIAELuRgIAAIANBkAFqIAhCACAEQgAQu5GAgAAgA0HQAGogB0IAIAVCABC7kYCAACADKQOQASILIAMpA1B8IgZCAYYiDCADKQMAfCIHIAMpA6ABIg0gAykDEHwiCEIBhiIOIAMpA8ABfCIEIAMpAyAiDyADKQPQAXwiBUIBhiIQIAMpA2B8IgkgAykDcCIRIAMpAzB8IgpCAYYiEiADKQPgAXwiEyADKQOAASIUIAMpA0B8IhVCAYYiFiADKQOwAXwiF0IziCADQYABakEIaikDACADQcAAakEIaikDAHwgFSAUVK18QgGGIBVCP4iEIANBsAFqQQhqKQMAfCAXIBZUrXxCDYaEfCIVQjOIIANB8ABqQQhqKQMAIANBMGpBCGopAwB8IAogEVStfEIBhiAKQj+IhCADQeABakEIaikDAHwgEyASVK18IBUgE1StfEINhoR8IgpCM4ggA0EgakEIaikDACADQdABakEIaikDAHwgBSAPVK18QgGGIAVCP4iEIANB4ABqQQhqKQMAfCAJIBBUrXwgCiAJVK18Qg2GhHwiBUIziCADQaABakEIaikDACADQRBqQQhqKQMAfCAIIA1UrXxCAYYgCEI/iIQgA0HAAWpBCGopAwB8IAQgDlStfCAFIARUrXxCDYaEfCIEQjOIIANBkAFqQQhqKQMAIANB0ABqQQhqKQMAfCAGIAtUrXxCAYYgBkI/iIQgA0EIaikDAHwgByAMVK18IAQgB1StfEINhoRCE34gF0L/////////A4N8IgZC/////////wODIQggBkIziCAVQv////////8Dg3whByAEQv////////8DgyEEIAVC/////////wODIQUgCkL/////////A4MhBiACQX9qIgINAAsgACAENwMgIAAgBTcDGCAAIAY3AxAgACAHNwMIIAAgCDcDACADQfABaiSAgICAAAukCwIBfw9+I4CAgIAAQZADayIDJICAgIAAIAMgAikDACIEQgAgASkDACIFQgAQu5GAgAAgA0GQAWogASkDICIGQgAgAikDCCIHQhN+QgAQu5GAgAAgA0HQAWogASkDGCIIQgAgAikDECIJQhN+IgpCABC7kYCAACADQZACaiABKQMQIgtCACACKQMYIgxCE34iDUIAELuRgIAAIANB0AJqIAEpAwgiDkIAIAIpAyAiD0ITfiIQQgAQu5GAgAAgA0HQAGogDkIAIARCABC7kYCAACADQRBqIAVCACAHQgAQu5GAgAAgA0GgAWogBkIAIApCABC7kYCAACADQeABaiAIQgAgDUIAELuRgIAAIANBoAJqIAtCACAQQgAQu5GAgAAgA0HgAGogC0IAIARCABC7kYCAACADQeACaiAOQgAgB0IAELuRgIAAIANBIGogBUIAIAlCABC7kYCAACADQbABaiAGQgAgDUIAELuRgIAAIANB8AFqIAhCACAQQgAQu5GAgAAgA0HwAGogCEIAIARCABC7kYCAACADQbACaiALQgAgB0IAELuRgIAAIANB8AJqIA5CACAJQgAQu5GAgAAgA0EwaiAFQgAgDEIAELuRgIAAIANBwAFqIAZCACAQQgAQu5GAgAAgA0GAAWogBkIAIARCABC7kYCAACADQYACaiAIQgAgB0IAELuRgIAAIANBwAJqIAtCACAJQgAQu5GAgAAgA0GAA2ogDkIAIAxCABC7kYCAACADQcAAaiAFQgAgD0IAELuRgIAAIAAgAykDsAEiDyADKQMgfCIEIAMpA/ABfCIFIAMpA2B8IgYgAykD4AJ8IgcgAykDoAEiESADKQMQfCIIIAMpA+ABfCILIAMpA6ACfCIOIAMpA1B8IgkgAykDkAEiEiADKQMAfCIQIAMpA9ABfCIMIAMpA5ACfCINIAMpA9ACfCIKQjOIIANBkAFqQQhqKQMAIANBCGopAwB8IBAgElStfCADQdABakEIaikDAHwgDCAQVK18IANBkAJqQQhqKQMAfCANIAxUrXwgA0HQAmpBCGopAwB8IAogDVStfEINhoR8IhBCM4ggA0GgAWpBCGopAwAgA0EQakEIaikDAHwgCCARVK18IANB4AFqQQhqKQMAfCALIAhUrXwgA0GgAmpBCGopAwB8IA4gC1StfCADQdAAakEIaikDAHwgCSAOVK18IBAgCVStfEINhoR8IghC/////////wODNwMQIAAgAykDwAEiDSADKQMwfCILIAMpA3B8Ig4gAykDsAJ8IgkgAykD8AJ8IgwgCEIziCADQbABakEIaikDACADQSBqQQhqKQMAfCAEIA9UrXwgA0HwAWpBCGopAwB8IAUgBFStfCADQeAAakEIaikDAHwgBiAFVK18IANB4AJqQQhqKQMAfCAHIAZUrXwgCCAHVK18Qg2GhHwiBEL/////////A4M3AxggACADKQOAASIPIAMpA0B8IgUgAykDgAJ8IgYgAykDwAJ8IgcgAykDgAN8IgggBEIziCADQcABakEIaikDACADQTBqQQhqKQMAfCALIA1UrXwgA0HwAGpBCGopAwB8IA4gC1StfCADQbACakEIaikDAHwgCSAOVK18IANB8AJqQQhqKQMAfCAMIAlUrXwgBCAMVK18Qg2GhHwiBEL/////////A4M3AyAgACAEQjOIIANBgAFqQQhqKQMAIANBwABqQQhqKQMAfCAFIA9UrXwgA0GAAmpBCGopAwB8IAYgBVStfCADQcACakEIaikDAHwgByAGVK18IANBgANqQQhqKQMAfCAIIAdUrXwgBCAIVK18Qg2GhEITfiAKQv////////8Dg3wiBEL/////////A4M3AwAgACAEQjOIIBBC/////////wODfDcDCCADQZADaiSAgICAAAvVDQYDfwN+AX8BfgF/BH4jgICAgABB8AJrIgMkgICAgAAgA0GgAmogAkEBEOOFgIAAIANBCGogA0GgAmogAhDkhYCAACADQaACaiADQQhqQQEQ44WAgAAgA0EwaiADQaACaiACEOSFgIAAIANBgAFqIAEgA0EIahDkhYCAACADQdABaiABIANBMGoQ5IWAgAAgA0GgAmogA0HQAWoQ4oWAgAAgA0H4AWpBIGogA0GgAmpBIGopAwA3AwAgA0H4AWpBGGogA0GgAmpBGGopAwA3AwAgA0H4AWpBEGogA0GgAmpBEGopAwA3AwAgA0H4AWpBCGogA0GgAmpBCGopAwA3AwAgAyADKQOgAjcD+AEgA0GgAmogA0H4AWpBAhDjhYCAACADQagBaiADQdABaiADQaACahDkhYCAACADQdgAaiADQYABaiADQagBahDkhYCAACADQaACaiADQdgAakEBEOOFgIAAIANB0AFqIAIgA0GgAmoQ5IWAgAAgA0H4AWogA0HQAWoQ4YWAgAAgA0GgAmogARDhhYCAAEEAIQJBASEEA0AgA0H4AWogAmotAAAgA0GgAmogAmotAABGEMyNgIAAIARxIQQgAkEBaiICQSBHDQALIAQQzI2AgAAhBSADQaACakEIakLw////////PyABQQhqKQMAfSIGQv////////8Dg0LQ/f//////PyABKQMAfSIHQjOIfDcDACADQaACakEQakLw////////PyABQRBqKQMAfSIIQv////////8DgyAGQjOIfDcDACADQaACakEYakLw////////PyABQRhqKQMAfSIGQv////////8DgyAIQjOIfDcDACADQaACakEgakLw////////PyABQSBqKQMAfSIIQv////////8DgyAGQjOIfDcDACADIAhCM4hCE34gB0L/////////A4N8NwOgAiADQagBaiADQdABahDhhYCAACADQfgBaiADQaACahDhhYCAAEEAIQJBASEEA0AgA0GoAWogAmotAAAgA0H4AWogAmotAABGEMyNgIAAIARxIQQgAkEBaiICQSBHDQALIAQQzI2AgAAhCSADQaACakEIakLw////////PyABQQhqKQMAfSIGQv////////8Dg0LQ/f//////PyABKQMAfSIHQjOIfDcDACADQaACakEQakLw////////PyABQRBqKQMAfSIIQv////////8DgyAGQjOIfDcDACADQaACakEYakLw////////PyABQRhqKQMAfSIGQv////////8DgyAIQjOIfDcDACADQaACakEgakLw////////PyABQSBqKQMAfSIIQv////////8DgyAGQjOIfDcDACADIAhCM4hCE34gB0L/////////A4N8NwOgAiADQfgBaiADQaACakHY/8GAABDkhYCAACADQYABaiADQdABahDhhYCAACADQagBaiADQfgBahDhhYCAAEEAIQJBASEEA0AgA0GAAWogAmotAAAgA0GoAWogAmotAABGEMyNgIAAIARxIQQgAkEBaiICQSBHDQALIAQQzI2AgAAhAiADQaACakHY/8GAACADQdgAahDkhYCAACACIAlyEMyNgIAAIQQgA0HgAGoiAiADKQOoAiACKQMAIgeFQgAgBK1C/wGDfSIGgyAHhSIHNwMAIANB2ABqQRBqIgQgAykDsAIgBCkDACIIhSAGgyAIhSIINwMAIANB2ABqQRhqIgEgAykDuAIgASkDACIKhSAGgyAKhSIKNwMAIANB2ABqQSBqIgsgAykDwAIgCykDACIMhSAGgyAMhSIMNwMAIAMgAykDoAIgAykDWCINhSAGgyANhSINNwNYIANB+AFqIANB2ABqEOGFgIAAIAtC8P///////z8gDH0iDkL/////////A4NC8P///////z8gCn0iD0IziHwgDIVCACADLQD4AUEBcRDMjYCAAK1C/wGDfSIGgyAMhTcDACABIA9C/////////wODQvD///////8/IAh9IgxCM4h8IAqFIAaDIAqFNwMAIAQgDEL/////////A4NC8P///////z8gB30iCkIziHwgCIUgBoMgCIU3AwAgAiAKQv////////8Dg0LQ/f//////PyANfSIIQjOIfCAHhSAGgyAHhTcDACADIA5CM4hCE34gCEL/////////A4N8IA2FIAaDIA2FNwNYIAAgCSAFchDMjYCAADoAACAAQShqIAspAwA3AwAgAEEgaiABKQMANwMAIABBGGogBCkDADcDACAAQRBqIAIpAwA3AwAgACADKQNYNwMIIANB8AJqJICAgIAAC9ADARp+IAExABIhAiABMQARIQMgATEAECEEIAExAA8hBSABMQANIQYgATEADiEHIAExAB8hCCABMQAeIQkgATEAHSEKIAExABwhCyABMQAbIQwgATEAGiENIAExAAwhDiABMQALIQ8gATEACiEQIAExAAkhESABMQAHIRIgATEACCETIAExABkhFCABMQAYIRUgATEAFyEWIAExABYhFyABMQATIRggATEAFCEZIAExABUhGiAAIAE1AAAgATEABEIghoQgATEABUIohoQgATEABiIbQjCGhEL/////////A4M3AwAgACAYIBlCCIaEIBpCEIaEIBdCGIaEIBZCIIaEIBVCKIaEIBRCMIaEQgGIQv////////8DgzcDGCAAIBsgEkIIhoQgE0IQhoQgEUIYhoQgEEIghoQgD0IohoQgDkIwhoRCA4hC/////////wODNwMIIAAgFSAUQgiGhCANQhCGhCAMQhiGhCALQiCGhCAKQiiGhCAJQjCGhCAIQjiGhEIMiEL/////////A4M3AyAgACAOIAZCCIaEIAdCEIaEIAVCGIaEIARCIIaEIANCKIaEIAJCMIaEIBhCOIaEQgaIQv////////8DgzcDEAvdIxECfwF+AX8BfgF/AX4BfwF+AX8BfgF/AX4BfwF+AX8Dfhl/I4CAgIAAQYAPayICJICAgIAAIAJB4A1qQQhqIAFBMGoiAykDACIEIAFBCGoiBSkDACIGfDcDACACQeANakEQaiABQThqIgcpAwAiCCABQRBqIgkpAwAiCnw3AwAgAkHgDWpBGGogAUHAAGoiCykDACIMIAFBGGoiDSkDACIOfDcDACACQeANakEgaiABQcgAaiIPKQMAIhAgAUEgaiIRKQMAIhJ8NwMAIAJB4A1qQTBqIAQgBn1C8P///////z98IgRC/////////wODIAEpAygiBiABKQMAIhN9QtD9//////8/fCIUQjOIfDcDACACQeANakE4aiAIIAp9QvD///////8/fCIIQv////////8DgyAEQjOIfDcDACACQeANakHAAGogDCAOfULw////////P3wiBEL/////////A4MgCEIziHw3AwAgAkHgDWpByABqIBAgEn1C8P///////z98IghC/////////wODIARCM4h8NwMAIAIgBiATfDcD4A0gAiAIQjOIQhN+IBRC/////////wODfDcDiA4gAkHgDWpB8ABqIAFB8ABqIhUpAwA3AwAgAkHgDWpB6ABqIAFB6ABqIhYpAwA3AwAgAkHgDWpB4ABqIAFB4ABqIhcpAwA3AwAgAkHgDWpB2ABqIAFB2ABqIhgpAwA3AwAgAiABKQNQNwOwDiACQeANakH4AGoiGSABQfgAakGw/8GAABDkhYCAACACIAJB4A1qQaABELyRgIAAIgJBoAFqIAJB4A1qQaABELyRgIAAIRogAkHAAmogAkHgDWpBoAEQvJGAgAAhGyACQeADaiACQeANakGgARC8kYCAACEcIAJBgAVqIAJB4A1qQaABELyRgIAAIR0gAkGgBmogAkHgDWpBoAEQvJGAgAAhHiACQcAHaiACQeANakGgARC8kYCAACEfIAJB4AhqIAJB4A1qQaABELyRgIAAISAgAkHADGpBIGogESkDADcDACACQcAMakEYaiANKQMANwMAIAJBwAxqQRBqIAkpAwA3AwAgAkHADGpBCGogBSkDADcDACACQcAMakEwaiIJIAMpAwA3AwAgAkHADGpBOGoiDSAHKQMANwMAIAJBwAxqQcAAaiIHIAspAwA3AwAgAkHADGpByABqIgsgDykDADcDACACIAEpAwA3A8AMIAIgASkDKDcD6AwgAkHADGpB8ABqIg8gFSkDADcDACACQcAMakHoAGoiESAWKQMANwMAIAJBwAxqQeAAaiIVIBcpAwA3AwAgAkHADGpB2ABqIhYgGCkDADcDACACIAEpA1A3A5ANIAJB4A1qIAJBwAxqEOiFgIAAIAJBgApqIAJB4A1qIBkQ5IWAgAAgAkGACmpBKGogAkHgDWpBKGoiASACQeANakHQAGoiAxDkhYCAACACQYAKakHQAGogAyAZEOSFgIAAIAJBgApqQfgAaiACQeANaiABEOSFgIAAIAJB4A1qIAJBgApqIAIQ2YWAgAAgAkHADGogAkHgDWogGRDkhYCAACACQcAMakEoaiIXIAEgAxDkhYCAACACQcAMakHQAGoiGCADIBkQ5IWAgAAgAkHADGpB+ABqIgUgAkHgDWogARDkhYCAACACQaALakEIaiIhIAkpAwAiBCACKQPIDCIGfDcDACACQaALakEQaiIiIA0pAwAiCCACKQPQDCIKfDcDACACQaALakEYaiIjIAcpAwAiDCACKQPYDCIOfDcDACACQaALakEgaiIkIAspAwAiECACKQPgDCISfDcDACACQaALakEwaiIlIAQgBn1C8P///////z98IgRC/////////wODIAIpA+gMIgYgAikDwAwiE31C0P3//////z98IhRCM4h8NwMAIAJBoAtqQThqIiYgCCAKfULw////////P3wiCEL/////////A4MgBEIziHw3AwAgAkGgC2pBwABqIicgDCAOfULw////////P3wiBEL/////////A4MgCEIziHw3AwAgAkGgC2pByABqIiggECASfULw////////P3wiCEL/////////A4MgBEIziHw3AwAgAiAGIBN8NwOgCyACIAhCM4hCE34gFEL/////////A4N8NwPICyACQaALakHwAGoiKSAPKQMANwMAIAJBoAtqQegAaiIqIBEpAwA3AwAgAkGgC2pB4ABqIisgFSkDADcDACACQaALakHYAGoiLCAWKQMANwMAIAIgAikDkA03A/ALIAJBoAtqQfgAaiItIAVBsP/BgAAQ5IWAgAAgAkHgDWogAkGACmogGiACQaALakGgARC8kYCAABDZhYCAACACQcAMaiACQeANaiAZEOSFgIAAIBcgASADEOSFgIAAIBggAyAZEOSFgIAAIAUgAkHgDWogARDkhYCAACAhIAkpAwAiBCACKQPIDCIGfDcDACAiIA0pAwAiCCACKQPQDCIKfDcDACAjIAcpAwAiDCACKQPYDCIOfDcDACAkIAspAwAiECACKQPgDCISfDcDACAlIAQgBn1C8P///////z98IgRC/////////wODIAIpA+gMIgYgAikDwAwiE31C0P3//////z98IhRCM4h8NwMAICYgCCAKfULw////////P3wiCEL/////////A4MgBEIziHw3AwAgJyAMIA59QvD///////8/fCIEQv////////8DgyAIQjOIfDcDACAoIBAgEn1C8P///////z98IghC/////////wODIARCM4h8NwMAIAIgBiATfDcDoAsgAiAIQjOIQhN+IBRC/////////wODfDcDyAsgKSAPKQMANwMAICogESkDADcDACArIBUpAwA3AwAgLCAWKQMANwMAIAIgAikDkA03A/ALIC0gBUGw/8GAABDkhYCAACACQeANaiACQYAKaiAbIAJBoAtqQaABELyRgIAAENmFgIAAIAJBwAxqIAJB4A1qIBkQ5IWAgAAgFyABIAMQ5IWAgAAgGCADIBkQ5IWAgAAgBSACQeANaiABEOSFgIAAICEgCSkDACIEIAIpA8gMIgZ8NwMAICIgDSkDACIIIAIpA9AMIgp8NwMAICMgBykDACIMIAIpA9gMIg58NwMAICQgCykDACIQIAIpA+AMIhJ8NwMAICUgBCAGfULw////////P3wiBEL/////////A4MgAikD6AwiBiACKQPADCITfULQ/f//////P3wiFEIziHw3AwAgJiAIIAp9QvD///////8/fCIIQv////////8DgyAEQjOIfDcDACAnIAwgDn1C8P///////z98IgRC/////////wODIAhCM4h8NwMAICggECASfULw////////P3wiCEL/////////A4MgBEIziHw3AwAgAiAGIBN8NwOgCyACIAhCM4hCE34gFEL/////////A4N8NwPICyApIA8pAwA3AwAgKiARKQMANwMAICsgFSkDADcDACAsIBYpAwA3AwAgAiACKQOQDTcD8AsgLSAFQbD/wYAAEOSFgIAAIAJB4A1qIAJBgApqIBwgAkGgC2pBoAEQvJGAgAAQ2YWAgAAgAkHADGogAkHgDWogGRDkhYCAACAXIAEgAxDkhYCAACAYIAMgGRDkhYCAACAFIAJB4A1qIAEQ5IWAgAAgISAJKQMAIgQgAikDyAwiBnw3AwAgIiANKQMAIgggAikD0AwiCnw3AwAgIyAHKQMAIgwgAikD2AwiDnw3AwAgJCALKQMAIhAgAikD4AwiEnw3AwAgJSAEIAZ9QvD///////8/fCIEQv////////8DgyACKQPoDCIGIAIpA8AMIhN9QtD9//////8/fCIUQjOIfDcDACAmIAggCn1C8P///////z98IghC/////////wODIARCM4h8NwMAICcgDCAOfULw////////P3wiBEL/////////A4MgCEIziHw3AwAgKCAQIBJ9QvD///////8/fCIIQv////////8DgyAEQjOIfDcDACACIAYgE3w3A6ALIAIgCEIziEITfiAUQv////////8Dg3w3A8gLICkgDykDADcDACAqIBEpAwA3AwAgKyAVKQMANwMAICwgFikDADcDACACIAIpA5ANNwPwCyAtIAVBsP/BgAAQ5IWAgAAgAkHgDWogAkGACmogHSACQaALakGgARC8kYCAABDZhYCAACACQcAMaiACQeANaiAZEOSFgIAAIBcgASADEOSFgIAAIBggAyAZEOSFgIAAIAUgAkHgDWogARDkhYCAACAhIAkpAwAiBCACKQPIDCIGfDcDACAiIA0pAwAiCCACKQPQDCIKfDcDACAjIAcpAwAiDCACKQPYDCIOfDcDACAkIAspAwAiECACKQPgDCISfDcDACAlIAQgBn1C8P///////z98IgRC/////////wODIAIpA+gMIgYgAikDwAwiE31C0P3//////z98IhRCM4h8NwMAICYgCCAKfULw////////P3wiCEL/////////A4MgBEIziHw3AwAgJyAMIA59QvD///////8/fCIEQv////////8DgyAIQjOIfDcDACAoIBAgEn1C8P///////z98IghC/////////wODIARCM4h8NwMAIAIgBiATfDcDoAsgAiAIQjOIQhN+IBRC/////////wODfDcDyAsgKSAPKQMANwMAICogESkDADcDACArIBUpAwA3AwAgLCAWKQMANwMAIAIgAikDkA03A/ALIC0gBUGw/8GAABDkhYCAACACQeANaiACQYAKaiAeIAJBoAtqQaABELyRgIAAENmFgIAAIAJBwAxqIAJB4A1qIBkQ5IWAgAAgFyABIAMQ5IWAgAAgGCADIBkQ5IWAgAAgBSACQeANaiABEOSFgIAAICEgCSkDACIEIAIpA8gMIgZ8NwMAICIgDSkDACIIIAIpA9AMIgp8NwMAICMgBykDACIMIAIpA9gMIg58NwMAICQgCykDACIQIAIpA+AMIhJ8NwMAICUgBCAGfULw////////P3wiBEL/////////A4MgAikD6AwiBiACKQPADCITfULQ/f//////P3wiFEIziHw3AwAgJiAIIAp9QvD///////8/fCIIQv////////8DgyAEQjOIfDcDACAnIAwgDn1C8P///////z98IgRC/////////wODIAhCM4h8NwMAICggECASfULw////////P3wiCEL/////////A4MgBEIziHw3AwAgAiAGIBN8NwOgCyACIAhCM4hCE34gFEL/////////A4N8NwPICyApIA8pAwA3AwAgKiARKQMANwMAICsgFSkDADcDACAsIBYpAwA3AwAgAiACKQOQDTcD8AsgLSAFQbD/wYAAEOSFgIAAIAJB4A1qIAJBgApqIB8gAkGgC2pBoAEQvJGAgAAQ2YWAgAAgAkHADGogAkHgDWogGRDkhYCAACAXIAEgAxDkhYCAACAYIAMgGRDkhYCAACAFIAJB4A1qIAEQ5IWAgAAgISAJKQMAIgQgAikDyAwiBnw3AwAgIiANKQMAIgggAikD0AwiCnw3AwAgIyAHKQMAIgwgAikD2AwiDnw3AwAgJCALKQMAIhAgAikD4AwiEnw3AwAgJSAEIAZ9QvD///////8/fCIEQv////////8DgyACKQPoDCIGIAIpA8AMIhN9QtD9//////8/fCIUQjOIfDcDACAmIAggCn1C8P///////z98IghC/////////wODIARCM4h8NwMAICcgDCAOfULw////////P3wiBEL/////////A4MgCEIziHw3AwAgKCAQIBJ9QvD///////8/fCIIQv////////8DgyAEQjOIfDcDACACIAYgE3w3A6ALIAIgCEIziEITfiAUQv////////8Dg3w3A8gLICkgDykDADcDACAqIBEpAwA3AwAgKyAVKQMANwMAICwgFikDADcDACACIAIpA5ANNwPwCyAtIAVBsP/BgAAQ5IWAgAAgICACQaALakGgARC8kYCAABogACACQYAKELyRgIAAGiACQYAPaiSAgICAAAujCAIBfxR+I4CAgIAAQdABayICJICAgIAAIAJBCGogAUEBEOOFgIAAIAJBMGogAUEoakEBEOOFgIAAIAJB2ABqIAFB0ABqQQEQ44WAgAAgAikDWCEDIAIpA2AhBCACKQNoIQUgAikDeCEGIAIpA3AhByACQYABakEIaiABQQhqKQMAIAFBMGopAwB8NwMAIAJBgAFqQRBqIAFBEGopAwAgAUE4aikDAHw3AwAgAkGAAWpBGGogAUEYaikDACABQcAAaikDAHw3AwAgAkGAAWpBIGogAUEgaikDACABQcgAaikDAHw3AwAgAiABKQMAIAEpAyh8NwOAASACQagBaiACQYABakEBEOOFgIAAIABByABqIAIpAygiCCACKQNQIgl8Igo3AwAgAEHAAGogAikDICILIAIpA0giDHwiDTcDACAAQThqIAIpAxgiDiACKQNAIg98IhA3AwAgAEEwaiACKQMQIhEgAikDOCISfCITNwMAIAAgAikDCCIUIAIpAzAiFXwiFjcDKCAAQfAAaiAJIAh9QvD///////8/fCIIQv////////8DgyAMIAt9QvD///////8/fCIJQjOIfCILNwMAIABB6ABqIAlC/////////wODIA8gDn1C8P///////z98IglCM4h8Igw3AwAgAEHgAGogCUL/////////A4MgEiARfULw////////P3wiCUIziHwiDjcDACAAQdgAaiAJQv////////8DgyAVIBR9QtD9//////8/fCIJQjOIfCIPNwMAIAAgCEIziEITfiAJQv////////8Dg3wiCDcDUCAAIAIpA8gBIAp9QvD///////8/fCIJQv////////8DgyACKQPAASANfULw////////P3wiCkIziHw3AyAgACAKQv////////8DgyACKQO4ASAQfULw////////P3wiCkIziHw3AxggACAKQv////////8DgyACKQOwASATfULw////////P3wiCkIziHw3AxAgACAKQv////////8DgyACKQOoASAWfULQ/f//////P3wiCkIziHw3AwggACAJQjOIQhN+IApC/////////wODfDcDACAAQZgBaiAGQgGGIAt9QvD///////8/fCIGQv////////8DgyAHQgGGIAx9QvD///////8/fCIHQjOIfDcDACAAQZABaiAHQv////////8DgyAFQgGGIA59QvD///////8/fCIFQjOIfDcDACAAQYgBaiAFQv////////8DgyAEQgGGIA99QvD///////8/fCIEQjOIfDcDACAAQYABaiADQgGGIAh9QtD9//////8/fCIDQjOIIARC/////////wODfDcDACAAIAZCM4hCE34gA0L/////////A4N8NwN4IAJB0AFqJICAgIAAC4cBAQF/AkACQAJAAkACQAJAAkAgAS0AAA4GAAECAwQFAAsgAUEIaigCACECIAEoAgQhAQwFC0EBIQIgAUEBaiEBDAQLIAFBAWohAUECIQIMAwsgAUEBaiEBQQQhAgwCCyABQQFqIQFBCCECDAELIAFBAWohAUEQIQILIAAgAjYCBCAAIAE2AgAL2gEAAkACQCACRQ0AAkACQAJAAkACQAJAIAFBAEgNACADKAIIDQEgAQ0CQQEhAgwECyAAQQhqQQA2AgAMBgsCQCADKAIEIgINAAJAIAENAEEBIQIMBAsgAUEBELaFgIAAIQIMAgsgAygCACACQQEgARC4hYCAACECDAELIAFBARC2hYCAACECCyACRQ0BCyAAIAI2AgQgAEEIaiABNgIAIABBADYCAA8LIAAgATYCBCAAQQhqQQE2AgAgAEEBNgIADwsgACABNgIEIABBCGpBADYCAAsgAEEBNgIAC+gBAQJ/I4CAgIAAQSBrIgMkgICAgAACQAJA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h4CAACACQRBqIAEQjIeAgAAgAigCECIBQRVHDQIgAkEcaigCACEDIAJBGGooAgAhAQJAIAIoAhQiBA0AQQEhBAJAIANBBEcNACABKAAAQQAoAPCcwoAARyEECyAAQRU2AgAgACAEOgAEDAQLQQEhBQJAIANBBEcNACAEKAAAQQAoAPCcwoAARyEFCyAAQRU2AgAgACAFOgAEIAFFDQMgBCABQQEQt4WAgAAMAwsgAEEENgIADAILIABBDjYCAAwBCyACKQIUIQYgACACKAIcNgIMIAAgBjcCBCAAIAE2AgALIAJBIGokgICAgAALvQICBH8BfiOAgICAAEEgayICJICAgIAAIAJBCGogARCNh4CAAAJAAkACQAJAIAItAAhBAXFFDQAgAi0ACUH/AXFBIkcNASABEIaHgIAAIAJBEGogARCMh4CAACACKAIQIgFBFUcNAiACQRxqKAIAIQMgAkEYaigCACEBAkAgAigCFCIEDQBBASEEAkAgA0EHRw0AIAFB/JzCgABBBxC6kYCAAEEARyEECyAAQRU2AgAgACAEOgAEDAQLQQEhBQJAIANBB0cNACAEQfycwoAAQQcQupGAgABBAEchBQsgAEEVNgIAIAAgBToABCABRQ0DIAQgAUEBELeFgIAADAMLIABBBDYCAAwCCyAAQQ42AgAMAQsgAikCFCEGIAAgAigCHDYCDCAAIAY3AgQgACABNgIACyACQSBqJICAgIAAC8kDAgN/AX4jgICAgABBIGsiAiSAgICAACACQQhqIAEQjYeAgAACQAJAAkACQAJAAkACQAJAIAItAAhBAXFFDQAgAi0ACUH/AXFBIkcNASABEIaHgIAAIAJBEGogARCMh4CAACACKAIQIgFBFUcNAiACQRxqKAIAIQMgAkEYaigCACEBAkAgAigCFCIEDQACQAJAAkACQAJAIANBe2oOAwABAgELIAFBmJ3CgABBBRC6kYCAAEUNCAsgAEEEaiEDDAELIABBBGohAyABQbidwoAAQQcQupGAgABFDQELIANBAjoAAAwICyADQQE6AAAMBwsCQAJAAkACQAJAIANBe2oOAwABAgELIARBmJ3CgABBBRC6kYCAAEUNCAsgAEEEaiEDDAELIABBBGohAyAEQbidwoAAQQcQupGAgABFDQELIANBAjoAAAwGCyADQQE6AAAMBQsgAEEE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DGogAkGQAWpBDGooAgA2AgAgACABNgIADAsLAkAgA0H/AXFB3QBHDQBBASEDQRMhBgwCCyACQZABaiAFEISGgIAAAkAgAigCkAEiBkEVRg0AIAIgAikAlQE3A4ABIAIgAkGcAWooAAA2AIcBIAItAJQBIQMMAgsgAkEYaiAFEI2HgIAAQQEhBiACLQAZIQMgAi0AGEEBcQ0AC0EBIQMLIAAgAzoABCAAIAIpA4ABNwAFIABBDGogAigAhwE2AAAgACAGNgIADAgLIABBBDYCAAwHCyACKQKUASEHIAAgAigCnAE2AgwgACAHNwIEIAAgATYCAAwGCyAAQQ42AgAMBQsgAEEENgIADAQLIABBFTYCAAwDCyAAQQs2AgAMAgsgAkHIAGogARCNh4CAAAJAAkACQCACLQBIQQFxRQ0AAkACQCACLQBJQf8BcUH7AEcNACABEIaHgIAAIAJBwABqIAEQgIeAgAAgAigCQCEDIAIgAi0AREEBcToAXCACIAM2AlggAkHwAGogAkHYAGoQm4aAgAACQCACKAJwIgNBFUcNAANAIAItAHRFDQMgAkGQAWogAigCWCIFEIuHgIAAAkACQAJAIAIoApABIgNBFUYNACACQYABakEMaiACQZABakEMaigCADYCACACIAIpApQBNwKEAQwBCyACQYABaiAFEISGgIAAIAIoAoABIgNBFUYNAQsgAiACKQCFATcDYCACIAJBjAFqKAAANgBnIAItAIQBIQEMBwsgAkHwAGogAkHYAGoQm4aAgAAgAigCcCIDQRVGDQALCyACIAIpAHU3A2AgAiACQfwAaigAADYAZyACLQB0IQEMBAsgAEEONgIADAULIAJBkAFqIAEQiYeAgAAgAigCkAEiAUEVRg0BIAAgAikClAE3AgQgAEEMaiACQZABakEMaigCADYCACAAIAE2AgAMBAsgAEEENgIADAMLIABBFTYCAAwCCyAAIAIpA2A3AAUgAEEMaiACKABnNgAAIAAgAToABCAAIAM2AgAMAQsgACADNgIACyACQaABaiSAgICAAAu9DAIPfwF+I4CAgIAAQYABayIGJICAgIAAIAZBKGogARCNh4CAAAJAAkACQAJAAkACQCAGLQAoQQFxRQ0AIAYtAClB/wFxQfsARw0BIAEQhoeAgAAgBkEgaiABEICHgIAAIAYtACQhByAGQRhqIAYoAiAiCBCNh4CAAEECIQlBACEKAkAgBi0AGEEBcQ0AQQAhC0EAIQwMBAsgBkHgAGpBBHIhDSAGLQAZIQ4gB0EBcSEPQQAhDEEAIQsDQAJAAkACQAJAAkACQAJAAkACQAJAIA5B/wFxIhBBLEYNACAQQf0ARg0CIA9B/wFxDQFBCSEJDA4LAkAgD0H/AXFFDQBBECEJDA4LIAgQhoeAgAAgBkEQaiAIEI2HgIAAAkAgBi0AEEEBcQ0AQQQhCQwOCyAGLQARIQ4LAkAgDkH/AXEiDkEiRg0AQRAhCSAOQf0ARw0NQRMhCQwNCyAGQfAAaiAIEPmFgIAAIAYtAHQhBwJAIAYoAnAiDkEVRg0AIAYgBikAdTcDUCAGIAZB/ABqKAAANgBXIA4hCQwNCyAHDgIDAgELIAwhDiARIQgCQAJAAkAgDA0AIAZB8ABqQeiCwoAAQQUQioaAgAAgBigCcEEVRw0BIAZB/ABqKAIAIRIgBkH4AGooAgAhCCAGKAJ0IQ4LAkAgCw0AIAZB8ABqQfSCwoAAQQgQioaAgAAgBigCcEEVRw0CIAZB/ABqKAIAIRMgBkHwAGpBCGooAgAhFCAGKAJ0IQsLIAYgEzYCSCAGKQNIIRUgBkEwaiABEImHgIAAIAYoAjAiAUEVRw0FIAAgFTcDGCAAIBQ2AhQgACALNgIQIAAgEjYCDCAAIAg2AgggACAONgIEIABBATYCAAwPCyAGQTxqIAZB+ABqKQMANwIAIAYgBikDcDcCNAwLCyAGQTxqIAZB8ABqQQhqKQMANwIAIAYgBikDcDcCNCAIRQ0KIA4gCEEBELeFgIAADAoLIAZB8ABqIAgQi4eAgAACQAJAIAYoAnAiDkEVRg0AIAZB4ABqQQxqIAZB8ABqQQxqKAIANgIAIAYgBikCdDcCZCAGIA42AmAMAQsgBkHgAGogCBCEhoCAACAGKAJgQRVGDQYLIAZBPGogBkHoAGopAwA3AgAgBiAGKQNgNwI0IAZBBjYCMEEAIQoMCwsgC0UNAyAGQTBqQQRyQfSCwoAAQQgQkoaAgAAgBkEGNgIwQQAhCgwKCyAMRQ0BIAZBMGpBBHJB6ILCgABBBRCShoCAACAGQQY2AjBBACEKDAkLIABBCGogBikCNDcCACAAQRBqIAZBPGooAgA2AgAgAEEGNgIAIAAgATYCBAJAIAhFDQAgDiAIQQEQt4WAgAALIBRFDQkgCyAUQQEQt4WAgAAMCQsgBkHwAGogCBCLh4CAAAJAAkACQCAGKAJwIg5BFUYNACANIAYpAnQ3AgAgDUEIaiAGQfwAaigCADYCACAGIA42AmAMAQsgBkHgAGogCBCChoCAACAGKAJgQRVGDQELIAZBPGogBkHoAGopAwA3AgAgBiAGKQNgNwI0IAZBBjYCMEEAIQxBACEKDAgLIAYoAmwhEiAGKAJoIREgBigCZCEMDAELIAZB8ABqIAgQi4eAgAACQAJAAkAgBigCcCIOQRVGDQAgDSAGKQJ0NwIAIA1BCGogBkH8AGooAgA2AgAgBiAONgJgDAELIAZB4ABqIAgQ+IWAgAAgBigCYEEVRg0BCyAGQTxqIAZB6ABqKQMANwIAIAYgBikDYDcCNCAGQQY2AjBBACELQQAhCgwHCyAGKAJsIRMgBigCaCEUIAYoAmQhCwsgBkEIaiAIEI2HgIAAQQAhDyAGLQAJIQ4gBi0ACEEBcQ0ADAQLCyAAQoaAgIDAADcDAAwECyAAQoaAgIDgATcDAAwDCyAMQQBHIQoMAQsgBkE4aiAHOgAAIAZBwABqIAYoAFc2AAAgBiAJNgI0IAYgBikDUDcAOSAGQQY2AjALAkAgC0UNACAURQ0AIAsgFEEBELeFgIAACwJAIAxFIApyDQAgEUUNACAMIBFBARC3hYCAAAsgBikCNCEVIABBDGogBkEwakEMaikCADcCACAAIBU3AgQgAEEGNgIACyAGQYABaiSAgICAAAv5AwEDfyOAgICAAEHgAGsiBiSAgICAACAGQRBqIAEQjYeAgAACQAJAAkACQAJAAkAgBi0AEEEBcUUNAAJAAkAgBi0AEUH/AXFB+wBHDQAgARCGh4CAACAGQQhqIAEQgIeAgAAgBigCCCEHIAYgBi0ADEEBcToALCAGIAc2AiggBkEwaiAGQShqEJuGgIAAAkAgBigCMEEVRw0AA0AgBi0ANEUNAyAGQdAAaiAGKAIoIgcQi4eAgAACQCAGKAJQIghBFUYNACAGQcAAakEMaiAGQdAAakEMaigCADYCACAGIAYpAlQ3AkQgBiAINgJADAcLIAZBwABqIAcQhIaAgAAgBigCQEEVRw0GIAZBMGogBkEoahCbhoCAACAGKAIwQRVGDQALCyAGQRhqQQhqIAZBMGpBCGopAwA3AwAgBiAGKQMwNwMYDAULIABBDjYCBAwFCyAGQdAAaiABEImHgIAAIAYoAlAiAUEVRg0BIABBCGogBikCVDcCACAAQRBqIAZB3ABqKAIANgIAIAAgATYCBAwECyAAQQQ2AgQMAwtBBCEBDAMLIAZBGGpBCGogBkHAAGpBCGopAwA3AwAgBiAGKQNANwMYCyAAIAYpAxg3AgQgAEEMaiAGQSBqKQMANwIAC0EGIQELIAAgATYCACAGQeAAaiSAgICAAAvhCAQFfwF+AX8BfiOAgICAAEGgAWsiBiSAgICAACAGQShqIAEQjYeAgAACQAJAAkACQAJAIAYtAChBAXFFDQAgBi0AKUH/AXFB+wBHDQEgARCGh4CAACAGQSBqIAEQgIeAgAAgBi0AJCEHIAZBGGogBigCICIIEI2HgIAAAkAgBi0AGEEBcQ0AQQIhCQwDCyAGLQAZIQkgB0EBcSEKQgAhCwNAAkACQAJAAkACQAJAAkACQCAJQf8BcSIMQSxGDQAgDEH9AEYNAiAKQf8BcQ0BQQkhCQwLCwJAIApB/wFxRQ0AQRAhCQwLCyAIEIaHgIAAIAZBEGogCBCNh4CAAAJAIAYtABBBAXENAEEEIQkMCwsgBi0AESEJCwJAIAlB/wFxIgpBIkYNAEEQIQkgCkH9AEcNCkETIQkMCgsgBkGQAWogCBD8hYCAACAGLQCUASEHIAYoApABIglBFUYNASAGIAYpAJUBNwNwIAYgBkGcAWooAAA2AHcMCQsCQCALpw0AIAZBkAFqQYCDwoAAQQcQioaAgAAgBigCkAFBFUcNAiAGKQOYASENCyAGIA03A1ggBkEwakEIaiIIIAZB0ABqQQxqIgkpAgA3AwAgBiAGKQJUNwMwIAZB0ABqIAEQiYeAgAAgBigCUCIBQRVHDQIgAEEDNgIAIAAgBikDMDcCBCAAQQxqIAgpAwA3AgAMCgsCQCAHQf8BcUUNACAGQZABaiAIEIuHgIAAAkACQCAGKAKQASIJQRVGDQAgBkGAAWpBDGogBkGQAWpBDGooAgA2AgAgBiAGKQKUATcChAEgBiAJNgKAAQwBCyAGQYABaiAIEISGgIAAIAYoAoABQRVGDQULIAZB3ABqIAZBiAFqKQMANwIAIAYgBikDgAE3AlQMCQsCQAJAAkAgC6dBAUYNACAGQZABaiAIEIuHgIAAIAYoApABIglBFUYNASAGQYABakEMaiAGQZABakEMaigCADYCACAGIAYpApQBNwKEASAGIAk2AoABDAILIAZB0ABqQQRyQYCDwoAAQQcQkoaAgAAMCgsgBkGAAWogCBD+hYCAACAGKAKAAUEVRg0DCyAGQdwAaiAGQYgBaikDADcCACAGIAYpA4ABNwJUDAgLIAZB3ABqIAZBmAFqKQMANwIAIAYgBikDkAE3AlQMBwsgAEEIaiAGKQJUNwIAIABBEGogCSgCADYCACAAQQY2AgAgACABNgIEDAcLIAYpA4gBIQ1CASELCyAGQQhqIAgQjYeAgABBACEKIAYtAAkhCSAGLQAIQQFxDQALQQIhCQwCCyAAQoaAgIDAADcDAAwDCyAAQoaAgIDgATcDAAwCCyAGQdgAaiAHOgAAIAZB4ABqIAYoAHc2AAAgBiAJNgJUIAYgBikDcDcAWQsgBkHIAGogBkHQAGpBDGopAgAiCzcDACAGIAYpAlQiDTcDQCAAQQxqIAs3AgAgACANNwIEIABBBjYCAAsgBkGgAWokgICAgAALtwwCD38BfiOAgICAAEGAAWsiBiSAgICAACAGQShqIAEQjYeAgAACQAJAAkACQAJAAkAgBi0AKEEBcUUNACAGLQApQf8BcUH7AEcNASABEIaHgIAAIAZBIGogARCAh4CAACAGLQAkIQcgBkEYaiAGKAIgIggQjYeAgABBAiEJQQAhCgJAIAYtABhBAXENAEEAIQtBACEMDAQLIAZB4ABqQQRyIQ0gBi0AGSEOIAdBAXEhD0EAIQxBACELA0ACQAJAAkACQAJAAkACQAJAAkACQCAOQf8BcSIQQSxGDQAgEEH9AEYNAiAPQf8BcQ0BQQkhCQwOCwJAIA9B/wFxRQ0AQRAhCQwOCyAIEIaHgIAAIAZBEGogCBCNh4CAAAJAIAYtABBBAXENAEEEIQkMDgsgBi0AESEOCwJAIA5B/wFxIg5BIkYNAEEQIQkgDkH9AEcNDUETIQkMDQsgBkHwAGogCBD9hYCAACAGLQB0IQcCQCAGKAJwIg5BFUYNACAGIAYpAHU3A1AgBiAGQfwAaigAADYAVyAOIQkMDQsgBw4CAwIBCyAMIQ4gESEIAkACQAJAIAwNACAGQfAAakHogsKAAEEFEIqGgIAAIAYoAnBBFUcNASAGQfwAaigCACESIAZB+ABqKAIAIQggBigCdCEOCwJAIAsNACAGQfAAakHtgsKAAEEHEIqGgIAAIAYoAnBBFUcNAiAGQfwAaigCACETIAZB+ABqKAIAIRQgBigCdCELCyAGIBM2AkggBikDSCEVIAZBMGogARCJh4CAACAGKAIwIgFBFUcNBSAAIBU3AxggACAUNgIUIAAgCzYCECAAIBI2AgwgACAINgIIIAAgDjYCBCAAQQA2AgAMDwsgBkE8aiAGQfgAaikDADcCACAGIAYpA3A3AjQMCwsgBkE8aiAGQfgAaikDADcCACAGIAYpA3A3AjQgCEUNCiAOIAhBARC3hYCAAAwKCyAGQfAAaiAIEIuHgIAAAkACQCAGKAJwIg5BFUYNACAGQeAAakEMaiAGQfAAakEMaigCADYCACAGIAYpAnQ3AmQgBiAONgJgDAELIAZB4ABqIAgQhIaAgAAgBigCYEEVRg0GCyAGQTxqIAZB6ABqKQMANwIAIAYgBikDYDcCNCAGQQY2AjBBACEKDAsLIAtFDQMgBkEwakEEckHtgsKAAEEHEJKGgIAAIAZBBjYCMEEAIQoMCgsgDEUNASAGQTBqQQRyQeiCwoAAQQUQkoaAgAAgBkEGNgIwQQAhCgwJCyAAQQhqIAYpAjQ3AgAgAEEQaiAGQTxqKAIANgIAIABBBjYCACAAIAE2AgQCQCAIRQ0AIA4gCEEBELeFgIAACyAURQ0JIAsgFEEBELeFgIAADAkLIAZB8ABqIAgQi4eAgAACQAJAAkAgBigCcCIOQRVGDQAgDSAGKQJ0NwIAIA1BCGogBkH8AGooAgA2AgAgBiAONgJgDAELIAZB4ABqIAgQgoaAgAAgBigCYEEVRg0BCyAGQTxqIAZB6ABqKQMANwIAIAYgBikDYDcCNCAGQQY2AjBBACEMQQAhCgwICyAGKAJsIRIgBigCaCERIAYoAmQhDAwBCyAGQfAAaiAIEIuHgIAAAkACQAJAIAYoAnAiDkEVRg0AIA0gBikCdDcCACANQQhqIAZB/ABqKAIANgIAIAYgDjYCYAwBCyAGQeAAaiAIEPiFgIAAIAYoAmBBFUYNAQsgBkE8aiAGQegAaikDADcCACAGIAYpA2A3AjQgBkEGNgIwQQAhC0EAIQoMBwsgBigCbCETIAYoAmghFCAGKAJkIQsLIAZBCGogCBCNh4CAAEEAIQ8gBi0ACSEOIAYtAAhBAXENAAwECwsgAEKGgICAwAA3AwAMBAsgAEKGgICA4AE3AwAMAwsgDEEARyEKDAELIAZBOGogBzoAACAGQcAAaiAGKABXNgAAIAYgCTYCNCAGIAYpA1A3ADkgBkEGNgIwCwJAIAtFDQAgFEUNACALIBRBARC3hYCAAAsCQCAMRSAKcg0AIBFFDQAgDCARQQEQt4WAgAALIAYpAjQhFSAAQQxqIAZBMGpBDGopAgA3AgAgACAVNwIEIABBBjYCAAsgBkGAAWokgICAgAAL6ggCC38BfiOAgICAAEGAAWsiBiSAgICAACAGQShqIAEQjYeAgAACQAJAAkACQAJAAkACQCAGLQAoQQFxRQ0AIAYtAClB/wFxQfsARw0BIAEQhoeAgAAgBkEgaiABEICHgIAAIAYtACQhByAGQRhqIAYoAiAiCBCNh4CAAEECIQkCQCAGLQAYQQFxDQBBACEKDAMLIAZB4ABqQQRyIQsgBi0AGSEMIAdBAXEhDUEAIQoDQAJAAkACQAJAAkACQAJAAkAgDEH/AXEiDkEsRg0AIA5B/QBGDQIgDUH/AXENAUEJIQkMCwsCQCANQf8BcUUNAEEQIQkMCwsgCBCGh4CAACAGQRBqIAgQjYeAgAACQCAGLQAQQQFxDQBBBCEJDAsLIAYtABEhDAsCQCAMQf8BcSIMQSJGDQBBECEJIAxB/QBHDQpBEyEJDAoLIAZB8ABqIAgQ+4WAgAAgBi0AdCEHIAYoAnAiDEEVRg0BIAYgBikAdTcDUCAGIAZB/ABqKAAANgBXIAwhCQwJCwJAIAoNACAGQfAAakGHg8KAAEEEEIqGgIAAIAYoAnBBFUcNAiAGQfwAaigCACEPIAZB+ABqKAIAIRAgBigCdCEKCyAGIA82AjwgBikCPCERIAZBMGogARCJh4CAACAGKAIwIghBFUcNAiAAIBE3AgwgACAQNgIIIAAgCjYCBCAAQQU2AgAMDAsCQCAHQf8BcUUNACAGQfAAaiAIEIuHgIAAAkACQCAGKAJwIgxBFUYNACAGQeAAakEMaiAGQfAAakEMaigCADYCACAGIAYpAnQ3AmQgBiAMNgJgDAELIAZB4ABqIAgQhIaAgAAgBigCYEEVRg0FCyAGQTxqIAZB6ABqKQMANwIAIAYgBikDYDcCNAwJCyAKRQ0CIAZBMGpBBHJBh4PCgABBBBCShoCAACAQRQ0KDAkLIAZBPGogBkH4AGopAwA3AgAgBiAGKQNwNwI0DAkLIABBCGogBikCNDcCACAAQRBqIAZBPGooAgA2AgAgAEEGNgIAIAAgCDYCBCAQRQ0JIAogEEEBELeFgIAADAkLIAZB8ABqIAgQi4eAgAACQAJAAkAgBigCcCIMQRVGDQAgCyAGKQJ0NwIAIAtBCGogBkH8AGooAgA2AgAgBiAMNgJgDAELIAZB4ABqIAgQgoaAgAAgBigCYEEVRg0BCyAGQTxqIAZB6ABqKQMANwIAIAYgBikDYDcCNAwICyAGKAJsIQ8gBigCaCEQIAYoAmQhCgsgBkEIaiAIEI2HgIAAQQAhDSAGLQAJIQwgBi0ACEEBcQ0ADAMLCyAAQoaAgIDAADcDAAwFCyAAQoaAgIDgATcDAAwECyAGQThqIAc6AAAgBkHAAGogBigAVzYAACAGIAk2AjQgBiAGKQNQNwA5CyAKRQ0BIBBFDQELIAogEEEBELeFgIAACyAGKQI0IREgAEEMaiAGQTBqQQxqKQIANwIAIAAgETcCBCAAQQY2AgALIAZBgAFqJICAgIAAC+wBAQF/I4CAgIAAQfAAayIDJICAgIAAIAMgAjYCDCADIAE2AgggA0EQakEUakEBNgIAIANCAjcCFCADQZSGwoAANgIQIANBzoGAgAA2AiwgAyADQShqNgIgIAMgA0EIajYCKCADQQA2AjggA0IBNwMwIANBwABqIANBMGpBjIPCgAAQ7JCAgAACQCADQRBqIANBwABqENmQgIAARQ0AQaSDwoAAQTcgA0HoAGpB3IPCgABBuITCgAAQ2pCAgAAACyAAIAMpAzA3AgQgAEEUNgIAIABBDGogA0E4aigCADYCACADQfAAaiSAgICAAAsNAELrkZO19tizovQAC+YBAQN/I4CAgIAAQcAAayICJICAgIAAIAJBADYCCCACQgE3AwAgAkEQaiACQYyDwoAAEOyQgIAAAkACQCABIAJBEGoQ0pCAgAANACACKAIIIQMgAigCACEEQQxBBBC2hYCAACIBRQ0BIAEgAzYCCCABIAM2AgQgASAENgIAIAEQgICAgAAgAUEMQQQQt4WAgAACQCACKAIEIgFFDQAgAigCACABQQEQt4WAgAALIAJBwABqJICAgIAADwtBpIPCgABBNyACQThqQdyDwoAAQbiEwoAAENqQgIAAAAtBDEEEEKiQgIAAAAsCAAsjAQF/AkAgAEEEaigCACIBRQ0AIAAoAgAgAUEBELeFgIAACwtgAQF/I4CAgIAAQSBrIgAkgICAgAAgAEEUakEBNgIAIABCATcCBCAAQfyFwoAANgIAIABBzoGAgAA2AhwgAEHwicKAADYCGCAAIABBGGo2AhAgAEH4icKAABC2kICAAAAL9QIBAn8jgICAgABBEGsiAiSAgICAAAJAAkACQAJAIAFBgAFJDQAgAkEANgIMIAFBgBBPDQEgAiABQT9xQYABcjoADSACIAFBBnZBwAFyOgAMQQIhAQwCCwJAIAAoAggiAyAAKAIERw0AIAAgAxDChoCAACAAKAIIIQMLIAAoAgAgA2ogAToAACAAIAAoAghBAWo2AggMAgsCQCABQYCABEkNACACIAFBP3FBgAFyOgAPIAIgAUEGdkE/cUGAAXI6AA4gAiABQQx2QT9xQYABcjoADSACIAFBEnZBB3FB8AFyOgAMQQQhAQwBCyACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDIQELAkAgACgCBCAAKAIIIgNrIAFPDQAgACADIAEQw4aAgAAgACgCCCEDCyAAKAIAIANqIAJBDGogARC8kYCAABogACAAKAIIIAFqNgIICyACQRBqJICAgIAAQQALSwEBfwJAIAAoAgQgACgCCCIDayACTw0AIAAgAyACEMOGgIAAIAAoAgghAwsgACgCACADaiABIAIQvJGAgAAaIAAgAyACajYCCEEAC+wBAQF/I4CAgIAAQfAAayIDJICAgIAAIAMgAjYCDCADIAE2AgggA0EQakEUakEBNgIAIANCAjcCFCADQbiGwoAANgIQIANBzoGAgAA2AiwgAyADQShqNgIgIAMgA0EIajYCKCADQQA2AjggA0IBNwMwIANBwABqIANBMGpBjIPCgAAQ7JCAgAACQCADQRBqIANBwABqENmQgIAARQ0AQaSDwoAAQTcgA0HoAGpB3IPCgABBuITCgAAQ2pCAgAAACyAAIAMpAzA3AgQgAEEUNgIAIABBDGogA0E4aigCADYCACADQfAAaiSAgICAAAvfAwEBfyOAgICAAEGAAWsiBSSAgICAACAFIAI2AgwgBSABNgIIAkACQAJAAkAgBA0AIAVBEGpBFGpBATYCACAFQgI3AhQgBUGQh8KAADYCECAFQc6BgIAANgJEIAUgBUHAAGo2AiAgBSAFQQhqNgJAIAVBADYCMCAFQgE3AyggBUHQAGogBUEoakGMg8KAABDskICAACAFQRBqIAVB0ABqENmQgIAADQIgACAFKQMoNwIEIABBFDYCACAAQQxqIAVBMGooAgA2AgAMAQsgBUEoakEMakHegICAADYCACAFQRBqQRRqQQI2AgAgBUICNwIUIAVB6IbCgAA2AhAgBUHOgYCAADYCLCAFIAQ2AjwgBSADNgI4IAUgBUEoajYCICAFIAVBOGo2AjAgBSAFQQhqNgIoIAVBADYCSCAFQgE3A0AgBUHQAGogBUHAAGpBjIPCgAAQ7JCAgAAgBUEQaiAFQdAAahDZkICAAA0CIAAgBSkDQDcCBCAAQRQ2AgAgAEEMaiAFQcgAaigCADYCAAsgBUGAAWokgICAgAAPC0Gkg8KAAEE3IAVB+ABqQdyDwoAAQbiEwoAAENqQgIAAAAtBpIPCgABBNyAFQfgAakHcg8KAAEG4hMKAABDakICAAAALgCIFBn8BfgZ/CH4EfyOAgICAAEEQayIDJICAgIAAAkACQAJAAkACQAJAAkACQAJAAkACQCACQQNqIgQgAkkNACAEQQJ2QQNsIQVBASEGAkAgBEEESQ0AIAVBf0oiBEUNAiAFIAQQtoWAgAAiBkUNAwtBACEHIANBADYCCCADIAU2AgQgAyAGNgIAIAEgAhCpjICAACIIrUIGfiIJQiCIpw0DAkAgCaciBEUNAEEAIQoCQCAFIARPDQAgA0EAIAQQw4aAgAAgAygCCCEKIAMoAgAhBgsgBiAKaiEFAkAgBEECSQ0AIAVBACAEQX9qIgQQuZGAgAAaIAYgCiAEaiIKaiEFCyAFQQA6AAAgCkEBaiEHCyADIAc2AghBACELQQAQq4yAgAAhBAJAAkACQAJAAkACQAJAAkAgAkEHcSIFDgYAAQIDBAEFC0EIIQUMBAtCASEJIAINBAwOC0EKIQUMAgtBCyEFDAELQQwhBQtBACACIAVrIgUgBSACSxsiDEEgTw0BQQAhDQwJCyABIAJBf2oiDmotAAAiBUE9Rg0JIAQgBWotAABB/wFHDQlCACEJDAoLIAxBYGohD0EAIQ5BACELAkADQCAOQWBGDQYgDkEgaiINIAJLDQcgC0EaaiAHSw0IQgAhCSAEIAEgDmoiCi0AACIFajEAACIQQv8BUQ0LAkAgBCAKQQFqLQAAIgVqMQAAIhFC/wFSDQAgDkEBaiEODAwLAkAgBCAKQQJqLQAAIgVqMQAAIhJC/wFSDQAgDkECaiEODAwLAkAgBCAKQQNqLQAAIgVqMQAAIhNC/wFSDQAgDkEDaiEODAwLAkAgBCAKQQRqLQAAIgVqMQAAIhRC/wFSDQAgDkEEaiEODAwLAkAgBCAKQQVqLQAAIgVqMQAAIhVC/wFSDQAgDkEFaiEODAwLAkAgBCAKQQZqLQAAIgVqMQAAIhZC/wFSDQAgDkEGaiEODAwLAkAgBCAKQQdqLQAAIgVqMQAAIhdC/wFSDQAgDkEHaiEODAwLIAYgC2oiGCARQjSGIBBCOoaEIBJCLoaEIBNCKIaEIBRCIoaEIBVCHIaEIBZCFoaEIhEgF0IQhoQiEEIYhkKAgICAgOA/gyARQgiGQoCAgIDwH4OEIBBCCIhCgICA+A+DIBBCGIhCgID8B4OEIBBCKIhCgP4DgyAQQjiIhISENwAAIAQgCkEIai0AACIFajEAACIQQv8BUQ0BAkAgBCAKQQlqLQAAIgVqMQAAIhFC/wFSDQAgDkEJaiEODAwLAkAgBCAKQQpqLQAAIgVqMQAAIhJC/wFSDQAgDkEKaiEODAwLAkAgBCAKQQtqLQAAIgVqMQAAIhNC/wFSDQAgDkELaiEODAwLAkAgBCAKQQxqLQAAIgVqMQAAIhRC/wFSDQAgDkEMaiEODAwLAkAgBCAKQQ1qLQAAIgVqMQAAIhVC/wFSDQAgDkENaiEODAwLAkAgBCAKQQ5qLQAAIgVqMQAAIhZC/wFSDQAgDkEOaiEODAwLAkAgBCAKQQ9qLQAAIgVqMQAAIhdC/wFSDQAgDkEPaiEODAwLIBhBBmogEUI0hiAQQjqGhCASQi6GhCATQiiGhCAUQiKGhCAVQhyGhCAWQhaGhCIRIBdCEIaEIhBCGIZCgICAgIDgP4MgEUIIhkKAgICA8B+DhCAQQgiIQoCAgPgPgyAQQhiIQoCA/AeDhCAQQiiIQoD+A4MgEEI4iISEhDcAAAJAAkAgBCAKQRBqLQAAIgVqMQAAIhBC/wFRDQACQCAEIApBEWotAAAiBWoxAAAiEUL/AVINACAOQRFqIQ4MDgsCQCAEIApBEmotAAAiBWoxAAAiEkL/AVINACAOQRJqIQ4MDgsCQCAEIApBE2otAAAiBWoxAAAiE0L/AVINACAOQRNqIQ4MDgsCQCAEIApBFGotAAAiBWoxAAAiFEL/AVINACAOQRRqIQ4MDgsCQCAEIApBFWotAAAiBWoxAAAiFUL/AVINACAOQRVqIQ4MDgsCQCAEIApBFmotAAAiBWoxAAAiFkL/AVINACAOQRZqIQ4MDgsgBCAKQRdqLQAAIgVqMQAAIhdC/wFSDQEgDkEXaiEODA0LIA5BEGohDgwMCyAYQQxqIBFCNIYgEEI6hoQgEkIuhoQgE0IohoQgFEIihoQgFUIchoQgFkIWhoQiESAXQhCGhCIQQhiGQoCAgICA4D+DIBFCCIZCgICAgPAfg4QgEEIIiEKAgID4D4MgEEIYiEKAgPwHg4QgEEIoiEKA/gODIBBCOIiEhIQ3AAACQCAEIApBGGotAAAiBWoxAAAiEEL/AVENAAJAIAQgCkEZai0AACIFajEAACIRQv8BUg0AIA5BGWohDgwNCwJAIAQgCkEaai0AACIFajEAACISQv8BUg0AIA5BGmohDgwNCwJAIAQgCkEbai0AACIFajEAACITQv8BUg0AIA5BG2ohDgwNCwJAIAQgCkEcai0AACIFajEAACIUQv8BUg0AIA5BHGohDgwNCwJAIAQgCkEdai0AACIFajEAACIVQv8BUg0AIA5BHWohDgwNCwJAIAQgCkEeai0AACIFajEAACIWQv8BUg0AIA5BHmohDgwNCwJAIAQgCkEfai0AACIFajEAACIXQv8BUg0AIA5BH2ohDgwNCyAYQRJqIBFCNIYgEEI6hoQgEkIuhoQgE0IohoQgFEIihoQgFUIchoQgFkIWhoQiECAXQhCGhCIJQhiGQoCAgICA4D+DIBBCCIZCgICAgPAfg4QgCUIIiEKAgID4D4MgCUIYiEKAgPwHg4QgCUIoiEKA/gODIAlCOIiEhIQ3AAAgCEF8aiEIIAtBGGohCyANIQ4gDSAPSw0KDAELCyAOQRhqIQ4MCgsgDkEIaiEODAkLQaCHwoAAQSNBnIjCgAAQy5CAgAAACxCpkICAAAALIAUgBBCokICAAAALQZiKwoAAQS5ByIrCgAAQy5CAgAAAC0FgQQBBrIjCgAAQvJCAgAAACyAOQSBqIAJBrIjCgAAQuZCAgAAACyALQRpqIAdBvIjCgAAQuZCAgAAACwJAAkAgDEEISQ0AIA0gDEF4aiIMTw0AAkACQAJAAkADQCANQXhGDQEgDUEIaiIOIAJLDQIgC0F3Sw0DIAtBCGogB0sNBEIAIQkCQCAEIAEgDWoiCi0AACIFajEAACIQQv8BUg0AIA0hDgwJCwJAIAQgCkEBai0AACIFajEAACIRQv8BUg0AIA1BAXIhDgwJCwJAIAQgCkECai0AACIFajEAACISQv8BUg0AIA1BAnIhDgwJCwJAIAQgCkEDai0AACIFajEAACITQv8BUg0AIA1BA3IhDgwJCwJAIAQgCkEEai0AACIFajEAACIUQv8BUg0AIA1BBHIhDgwJCwJAIAQgCkEFai0AACIFajEAACIVQv8BUg0AIA1BBXIhDgwJCwJAIAQgCkEGai0AACIFajEAACIWQv8BUg0AIA1BBnIhDgwJCwJAIAQgCkEHai0AACIFajEAACIXQv8BUg0AIA1BB3IhDgwJCyAGIAtqIBFCNIYgEEI6hoQgEkIuhoQgE0IohoQgFEIihoQgFUIchoQgFkIWhoQiECAXQhCGhCIJQhiGQoCAgICA4D+DIBBCCIZCgICAgPAfg4QgCUIIiEKAgID4D4MgCUIYiEKAgPwHg4QgCUIoiEKA/gODIAlCOIiEhIQ3AAAgC0EGaiELIAhBf2ohCCAOIQ0gDiAMTw0GDAALC0F4IA1BCGpBzIjCgAAQvJCAgAAACyANQQhqIAJBzIjCgAAQuZCAgAAACyALIAtBCGpB3IjCgAAQvJCAgAAACyALQQhqIAdB3IjCgAAQuZCAgAAACyANIQ4LAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCEECTw0AIAshCAwBCyAIQX9qIQwgAiAOayEKA0AgDiACSw0CIAtBeUsNAyALQQZqIgggB0sNBCACIA5GDQVCACEJIAQgASAOaiINLQAAIgVqMQAAIhBC/wFRDRcgCkECSQ0GIAQgDUEBai0AACIFajEAACIRQv8BUQ0HIApBAk0NCCAEIA1BAmotAAAiBWoxAAAiEkL/AVENCSAKQQNNDQogBCANQQNqLQAAIgVqMQAAIhNC/wFRDQsgCkEETQ0MIAQgDUEEai0AACIFajEAACIUQv8BUQ0NIApBBU0NDiAEIA1BBWotAAAiBWoxAAAiFUL/AVENDyAKQQZNDRAgBCANQQZqLQAAIgVqMQAAIhZC/wFRDREgCkEHTQ0SIAQgDUEHai0AACIFajEAACIXQv8BUQ0TIAYgC2oiBUEEaiARQjSGIBBCOoaEIBJCLoaEIBNCKIaEIBRCIoaEIBVCHIaEIBZCFoaEIhAgF0IQhoQiCUIYhkKAgICAgOA/gyAQQgiGQoCAgIDwH4OEQiCIPQAAIAUgCUIIiEKAgID4D4MgCUIYiEKAgPwHg4QgCUIoiEKA/gODIAlCOIiEhD4AACAKQXhqIQogDkEIaiEOIAghCyAMQX9qIgwNAAsLAkAgDiACSw0AAkAgDiACRw0AQQAhBUEAIRlCACEJQQAhBEEAIQoMFQsgASACaiEPIAEgDmohC0IAIQlBACEaQQAhAUEAIQxBACEZQQAhGAJAAkACQAJAA0BBACEKA0AgGCAKaiECIAwgCmohDQJAIAsgCmoiGy0AACIFQT1GDQAgDUEASg0EIAQgBWoxAAAiEEL/AVENBiACQQFqIRggECAZQQFqIhlBOmxBPnGthiAJhCEJIAUhGiANIQwgG0EBaiILIA9HDQIMGgsgAkECcUUNAiABIAIgDRshASALIApBAWoiCmogD0cNAAsLIBohBQwXCyABIAIgDCAKakEAShsgDmohDgwBCyABIA5qIQ4LQT0hBUIAIQkMFwsgDiAYaiAKaiEOQgAhCQwWCyAOIAJBjInCgAAQuJCAgAAACyAOIAJB7IjCgAAQuJCAgAAACyALIAtBBmpB/IjCgAAQvJCAgAAACyALQQZqIAdB/IjCgAAQuZCAgAAAC0EAQQBB2IrCgAAQt5CAgAAAC0EBQQFB2IrCgAAQt5CAgAAACyAOQQFqIQ4MDwtBAkECQdiKwoAAELeQgIAAAAsgDkECaiEODA0LQQNBA0HYisKAABC3kICAAAALIA5BA2ohDgwLC0EEQQRB2IrCgAAQt5CAgAAACyAOQQRqIQ4MCQtBBUEFQdiKwoAAELeQgIAAAAsgDkEFaiEODAcLQQZBBkHYisKAABC3kICAAAALIA5BBmohDgwFC0EHQQdB2IrCgAAQt5CAgAAACyAOQQdqIQ4MAwtBACEEIBkhCgJAAkACQAJAAkACQAJAAkAgGQ4JCAABAgMABAUGAAsQj4aAgAAAC0EIIQoMBQtBECEKDAQLQRghCgwDC0EgIQoMAgtBKCEKDAELQTAhCgtBASEECwJAAkAgCSAKrYZCAFINAAJAIARFDQAgCCAHIAggB0sbIQJBACEEQTghBQNAIAIgCEYNAyAGIAhqIAkgBUE4ca2IPAAAIAVBeGohBSAIQQFqIQggBEEIaiIEIApJDQALCyAAIAMpAwA3AgAgA0EIaiIFIAUoAgAiBSAIIAUgCEkbIgU2AgAgAEEIaiAFNgIADAQLIA4gGWpBf2ohDkICIQkMAgsgAiAHQYiKwoAAELeQgIAAAAsLIABBADYCACAAIA6tQiCGIAWtQv8Bg0IIhoQgCYQ3AgQgAygCBCIFRQ0AIAMoAgAgBUEBELeFgIAACyADQRBqJICAgIAAC74CAgV/AX4jgICAgABBIGsiAiSAgICAACABKAIAIQMgAiABQQhqKAIAIgRBgAIQpYyAgAACQAJAAkACQCACKAIARQ0AAkACQCACKAIEIgENAEEBIQUMAQsgAUF/SiIGRQ0CIAEgBhC5hYCAACIFRQ0DCyADIARBgAIgASAFIAEQpIyAgAAgAkEIaiAFIAEQyZCAgAACQCACKAIIRQ0AIAIpAgwiB0KAgICA8B+DQoCAgIAgUg0ECyAAIAE2AgggACABNgIEIAAgBTYCACACQSBqJICAgIAADwtB7IvCgABBLUGcjMKAABCshoCAAAALEKmQgIAAAAsgASAGEKiQgIAAAAsgAiAHNwIUIAIgATYCECACIAE2AgwgAiAFNgIIQeiKwoAAQQwgAkEIakH0isKAAEHci8KAABDakICAAAALEABBAUGsjMKAABC/j4CAAAvmAQEDfyOAgICAAEHAAGsiAiSAgICAACACQQA2AgggAkIBNwMAIAJBEGogAkGMg8KAABDskICAAAJAAkAgASACQRBqENKQgIAADQAgAigCCCEDIAIoAgAhBEEMQQQQtoWAgAAiAUUNASABIAM2AgggASADNgIEIAEgBDYCACABEICAgIAAIAFBDEEEELeFgIAAAkAgAigCBCIBRQ0AIAIoAgAgAUEBELeFgIAACyACQcAAaiSAgICAAA8LQaSDwoAAQTcgAkE4akHcg8KAAEG4hMKAABDakICAAAALQQxBBBCokICAAAALiAEBAn8jgICAgABBEGsiAiSAgICAACACIAEQgYaAgAACQAJAIAIoAgAiAUEVRw0AIABBDjYCBAwBCyAAIAIvAAU7AAkgAEELaiACLQAHOgAAIAItAAQhAyAAQQxqIAIpAwg3AgAgAEEIaiADOgAAIAAgATYCBAsgAEEBNgIAIAJBEGokgICAgAAL0AMBBH8jgICAgABBIGsiAiSAgICAACACQRBqIAEQgYaAgAACQAJAAkACQCACKAIQIgNBFUcNACACLQAUIQQgAkEQaiABEIuHgIAAIAIoAhAiA0EVRg0CIAJBDmogAi0AFzoAACACIAIvABU7AQwMAQsgAkEOaiACLQAXOgAAIAIgAi8AFTsBDAsgAi0AFCEBIAIoAhghBCACKAIcIQUgACADNgIEIAAgAi8BDDsACSAAQQE2AgAgAEEIaiABOgAAIABBEGogBTYCACAAQQxqIAQ2AgAgAEELaiACQQ5qLQAAOgAADAELAkAgBEH/AXFFDQAgAkEQaiABEKKGgIAAAkAgAigCEEEVRw0AIABBATYCBCAAQQhqIAIpAhQ3AgAgAEEQaiACQRxqKAIANgIAIABBADYCAAwCCyAAIAIpAxA3AgQgAEEMaiACQRhqKQMANwIAIABBATYCAAwBCyACQRBqIAEQpYaAgAACQCACKAIQQRVHDQAgAEEANgIEIABBCGogAikCFDcCACAAQRBqIAJBHGooAgA2AgAgAEEANgIADAELIAAgAikDEDcCBCAAQQxqIAJBGGopAwA3AgAgAEEBNgIACyACQSBqJICAgIAAC+QDAQR/I4CAgIAAQTBrIgIkgICAgAAgAkEQaiABEIGGgIAAAkACQAJAAkAgAigCECIDQRVHDQAgAi0AFCEEIAJBEGogARCLh4CAACACKAIQIgNBFUYNAiACQQ5qIAItABc6AAAgAiACLwAVOwEMDAELIAJBDmogAi0AFzoAACACIAIvABU7AQwLIAItABQhASACKAIYIQQgAigCHCEFIAAgAzYCBCAAIAIvAQw7AAkgAEEHNgIAIABBCGogAToAACAAQRBqIAU2AgAgAEEMaiAENgIAIABBC2ogAkEOai0AADoAAAwBCwJAIARB/wFxRQ0AIAJBEGogARCkhoCAAAJAIAIoAhBBBkYNACAAIAIpAxA3AwAgAEEYaiACQRBqQRhqKQMANwMAIABBEGogAkEQakEQaikDADcDACAAQQhqIAJBEGpBCGopAwA3AwAMAgsgACACKQIUNwIEIABBBzYCACAAQQxqIAJBEGpBDGopAgA3AgAMAQsgAkEQaiABEKOGgIAAAkAgAigCEA0AIABBBjYCACAAIAIpAhQ3AgQgAEEMaiACQRBqQQxqKQIANwIADAELIAAgAikCFDcCBCAAQQc2AgAgAEEMaiACQRBqQQxqKQIANwIACyACQTBqJICAgIAAC8cDAQR/I4CAgIAAQTBrIgIkgICAgAAgAkEYaiABKAIAIgMQjYeAgAACQAJAAkAgAi0AGEEBcUUNAAJAAkACQCACLQAZIgRB/wFxIgVBLEYNAAJAIAVB/QBGDQAgAS0ABA0CIABBCTYCAAwGCyAAQRU2AgAgAEEAOgAEDAULIAEtAAQNACADEIaHgIAAIAJBEGogAxCNh4CAACACLQAQQQFxRQ0DIAItABEhBAwBCyABQQA6AAQLAkACQCAEQf8BcSIBQSJGDQAgAUH9AEYNASAAQRA2AgAMBAsgAkEIaiADEI2HgIAAAkACQCACLQAIQQFxDQBBBCEBDAELAkAgAi0ACUH/AXFBIkYNAEEOIQEMAQsgAxCGh4CAACACQSBqIAMQjIeAgAACQCACKAIgIgFBFUcNAAJAIAIoAiQiAUUNACACQShqKAIAIgNFDQAgASADQQEQt4WAgAALIABBFTYCACAAQQE6AAQMBQsgAigCLCEDIAIoAighBSACKAIkIQQLIAAgAzYCDCAAIAU2AgggACAENgIEIAAgATYCAAwDCyAAQRM2AgAMAgsgAEECNgIADAELIABBBDYCAAsgAkEwaiSAgICAAAvhBAIBfwJ+I4CAgIAAQeAAayIEJICAgIAAIARBwABqIAFB3IzCgABBACACIAMQhoaAgAACQAJAAkACQCAEKAJAIgNBBkYNACAEQRBqQRxqIARBwABqQRxqKAIANgIAIARBEGpBDGogBEHAAGpBDGopAgA3AgAgBCAEKQJUNwIkIAQgBCkCRDcCFCAEIAM2AhAgBEEIaiABEI2HgIAAIARBEGpBBHIhAiAELQAIQQFxRQ0BIAQtAAlB/wFxQf0ARw0CIAEQhoeAgAAgAEEYaiAEQRBqQRhqKQMANwMAIABBEGogBEEQakEQaikDADcDACAAQQhqIARBEGpBCGopAwA3AwAgACAEKQMQNwMADAMLIARBOGogBEHAAGpBDGopAgAiBTcDACAEIAQpAkQiBjcDMCAAQQxqIAU3AgAgACAGNwIEIABBBjYCAAwCCyAAQoaAgIDAADcDAAJAAkACQCADDgUAAQIEBAILAkAgBCgCGCIARQ0AIAQoAhQgAEEBELeFgIAACyAEQSBqIQIMAQsCQCAEKAIYIgBFDQAgBCgCFCAAQQEQt4WAgAALIARBIGohAgsgAkEEaigCACIARQ0BIAIoAgAgAEEBELeFgIAADAELIABChoCAgLABNwMAAkACQAJAIAMOBQABAgMDAgsCQCAEKAIYIgBFDQAgBCgCFCAAQQEQt4WAgAALIARBIGohAgwBCwJAIAQoAhgiAEUNACAEKAIUIABBARC3hYCAAAsgBEEgaiECCyACQQRqKAIAIgBFDQAgAigCACAAQQEQt4WAgAALIARB4ABqJICAgIAAC+EEAgF/An4jgICAgABB4ABrIgQkgICAgAAgBEHAAGogAUHcjMKAAEEAIAIgAxCIhoCAAAJAAkACQAJAIAQoAkAiA0EGRg0AIARBEGpBHGogBEHAAGpBHGooAgA2AgAgBEEQakEMaiAEQcAAakEMaikCADcCACAEIAQpAlQ3AiQgBCAEKQJENwIUIAQgAzYCECAEQQhqIAEQjYeAgAAgBEEQakEEciECIAQtAAhBAXFFDQEgBC0ACUH/AXFB/QBHDQIgARCGh4CAACAAQRhqIARBEGpBGGopAwA3AwAgAEEQaiAEQRBqQRBqKQMANwMAIABBCGogBEEQakEIaikDADcDACAAIAQpAxA3AwAMAwsgBEE4aiAEQcAAakEMaikCACIFNwMAIAQgBCkCRCIGNwMwIABBDGogBTcCACAAIAY3AgQgAEEGNgIADAILIABChoCAgMAANwMAAkACQAJAIAMOBQABAgQEAgsCQCAEKAIYIgBFDQAgBCgCFCAAQQEQt4WAgAALIARBIGohAgwBCwJAIAQoAhgiAEUNACAEKAIUIABBARC3hYCAAAsgBEEgaiECCyACQQRqKAIAIgBFDQEgAigCACAAQQEQt4WAgAAMAQsgAEKGgICAsAE3AwACQAJAAkAgAw4FAAECAwMCCwJAIAQoAhgiAEUNACAEKAIUIABBARC3hYCAAAsgBEEgaiECDAELAkAgBCgCGCIARQ0AIAQoAhQgAEEBELeFgIAACyAEQSBqIQILIAJBBGooAgAiAEUNACACKAIAIABBARC3hYCAAAsgBEHgAGokgICAgAAL4QQCAX8CfiOAgICAAEHgAGsiBCSAgICAACAEQcAAaiABQdyMwoAAQQAgAiADEIWGgIAAAkACQAJAAkAgBCgCQCIDQQZGDQAgBEEQakEcaiAEQcAAakEcaigCADYCACAEQRBqQQxqIARBwABqQQxqKQIANwIAIAQgBCkCVDcCJCAEIAQpAkQ3AhQgBCADNgIQIARBCGogARCNh4CAACAEQRBqQQRyIQIgBC0ACEEBcUUNASAELQAJQf8BcUH9AEcNAiABEIaHgIAAIABBGGogBEEQakEYaikDADcDACAAQRBqIARBEGpBEGopAwA3AwAgAEEIaiAEQRBqQQhqKQMANwMAIAAgBCkDEDcDAAwDCyAEQThqIARBwABqQQxqKQIAIgU3AwAgBCAEKQJEIgY3AzAgAEEMaiAFNwIAIAAgBjcCBCAAQQY2AgAMAgsgAEKGgICAwAA3AwACQAJAAkAgAw4FAAECBAQCCwJAIAQoAhgiAEUNACAEKAIUIABBARC3hYCAAAsgBEEgaiECDAELAkAgBCgCGCIARQ0AIAQoAhQgAEEBELeFgIAACyAEQSBqIQILIAJBBGooAgAiAEUNASACKAIAIABBARC3hYCAAAwBCyAAQoaAgICwATcDAAJAAkACQCADDgUAAQIDAwILAkAgBCgCGCIARQ0AIAQoAhQgAEEBELeFgIAACyAEQSBqIQIMAQsCQCAEKAIYIgBFDQAgBCgCFCAAQQEQt4WAgAALIARBIGohAgsgAkEEaigCACIARQ0AIAIoAgAgAEEBELeFgIAACyAEQeAAaiSAgICAAAvhBAIBfwJ+I4CAgIAAQeAAayIEJICAgIAAIARBwABqIAFB3IzCgABBACACIAMQiYaAgAACQAJAAkACQCAEKAJAIgNBBkYNACAEQRBqQRxqIARBwABqQRxqKAIANgIAIARBEGpBDGogBEHAAGpBDGopAgA3AgAgBCAEKQJUNwIkIAQgBCkCRDcCFCAEIAM2AhAgBEEIaiABEI2HgIAAIARBEGpBBHIhAiAELQAIQQFxRQ0BIAQtAAlB/wFxQf0ARw0CIAEQhoeAgAAgAEEYaiAEQRBqQRhqKQMANwMAIABBEGogBEEQakEQaikDADcDACAAQQhqIARBEGpBCGopAwA3AwAgACAEKQMQNwMADAMLIARBOGogBEHAAGpBDGopAgAiBTcDACAEIAQpAkQiBjcDMCAAQQxqIAU3AgAgACAGNwIEIABBBjYCAAwCCyAAQoaAgIDAADcDAAJAAkACQCADDgUAAQIEBAILAkAgBCgCGCIARQ0AIAQoAhQgAEEBELeFgIAACyAEQSBqIQIMAQsCQCAEKAIYIgBFDQAgBCgCFCAAQQEQt4WAgAALIARBIGohAgsgAkEEaigCACIARQ0BIAIoAgAgAEEBELeFgIAADAELIABChoCAgLABNwMAAkACQAJAIAMOBQABAgMDAgsCQCAEKAIYIgBFDQAgBCgCFCAAQQEQt4WAgAALIARBIGohAgwBCwJAIAQoAhgiAEUNACAEKAIUIABBARC3hYCAAAsgBEEgaiECCyACQQRqKAIAIgBFDQAgAigCACAAQQEQt4WAgAALIARB4ABqJICAgIAAC+EEAgF/An4jgICAgABB4ABrIgQkgICAgAAgBEHAAGogAUHcjMKAAEEAIAIgAxCDhoCAAAJAAkACQAJAIAQoAkAiA0EGRg0AIARBEGpBHGogBEHAAGpBHGooAgA2AgAgBEEQakEMaiAEQcAAakEMaikCADcCACAEIAQpAlQ3AiQgBCAEKQJENwIUIAQgAzYCECAEQQhqIAEQjYeAgAAgBEEQakEEciECIAQtAAhBAXFFDQEgBC0ACUH/AXFB/QBHDQIgARCGh4CAACAAQRhqIARBEGpBGGopAwA3AwAgAEEQaiAEQRBqQRBqKQMANwMAIABBCGogBEEQakEIaikDADcDACAAIAQpAxA3AwAMAwsgBEE4aiAEQcAAakEMaikCACIFNwMAIAQgBCkCRCIGNwMwIABBDGogBTcCACAAIAY3AgQgAEEGNgIADAILIABChoCAgMAANwMAAkACQAJAIAMOBQABAgQEAgsCQCAEKAIYIgBFDQAgBCgCFCAAQQEQt4WAgAALIARBIGohAgwBCwJAIAQoAhgiAEUNACAEKAIUIABBARC3hYCAAAsgBEEgaiECCyACQQRqKAIAIgBFDQEgAigCACAAQQEQt4WAgAAMAQsgAEKGgICAsAE3AwACQAJAAkAgAw4FAAECAwMCCwJAIAQoAhgiAEUNACAEKAIUIABBARC3hYCAAAsgBEEgaiECDAELAkAgBCgCGCIARQ0AIAQoAhQgAEEBELeFgIAACyAEQSBqIQILIAJBBGooAgAiAEUNACACKAIAIABBARC3hYCAAAsgBEHgAGokgICAgAAL4QQCAX8CfiOAgICAAEHgAGsiBCSAgICAACAEQcAAaiABQdyMwoAAQQAgAiADEIeGgIAAAkACQAJAAkAgBCgCQCIDQQZGDQAgBEEQakEcaiAEQcAAakEcaigCADYCACAEQRBqQQxqIARBwABqQQxqKQIANwIAIAQgBCkCVDcCJCAEIAQpAkQ3AhQgBCADNgIQIARBCGogARCNh4CAACAEQRBqQQRyIQIgBC0ACEEBcUUNASAELQAJQf8BcUH9AEcNAiABEIaHgIAAIABBGGogBEEQakEYaikDADcDACAAQRBqIARBEGpBEGopAwA3AwAgAEEIaiAEQRBqQQhqKQMANwMAIAAgBCkDEDcDAAwDCyAEQThqIARBwABqQQxqKQIAIgU3AwAgBCAEKQJEIgY3AzAgAEEMaiAFNwIAIAAgBjcCBCAAQQY2AgAMAgsgAEKGgICAwAA3AwACQAJAAkAgAw4FAAECBAQCCwJAIAQoAhgiAEUNACAEKAIUIABBARC3hYCAAAsgBEEgaiECDAELAkAgBCgCGCIARQ0AIAQoAhQgAEEBELeFgIAACyAEQSBqIQILIAJBBGooAgAiAEUNASACKAIAIABBARC3hYCAAAwBCyAAQoaAgICwATcDAAJAAkACQCADDgUAAQIDAwILAkAgBCgCGCIARQ0AIAQoAhQgAEEBELeFgIAACyAEQSBqIQIMAQsCQCAEKAIYIgBFDQAgBCgCFCAAQQEQt4WAgAALIARBIGohAgsgAkEEaigCACIARQ0AIAIoAgAgAEEBELeFgIAACyAEQeAAaiSAgICAAAuIAgIEfwF+I4CAgIAAQSBrIgIkgICAgAAgAkEQaiABEIKGgIAAAkACQAJAAkAgAigCECIDQRVHDQAgAkEcaigCACEEIAJBGGooAgAhAyACKAIUIQUgAkEIaiABEI2HgIAAIAItAAhBAXFFDQEgAi0ACUH/AXFB/QBHDQIgARCGh4CAACAAQQxqIAQ2AgAgAEEIaiADNgIAIAAgBTYCBCAAQRU2AgAMAwsgAikCFCEGIAAgAigCHDYCDCAAIAY3AgQgACADNgIADAILIABBBDYCACADRQ0BIAUgA0EBELeFgIAADAELIABBCzYCACADRQ0AIAUgA0EBELeFgIAACyACQSBqJICAgIAAC78DAQV/I4CAgIAAQTBrIgIkgICAgAAgAkEQaiABEI2HgIAAAkACQAJAAkAgAi0AEEEBcQ0AQQQhAQwBCwJAAkAgAi0AEUH/AXEiA0H7AEYNAAJAIANBIkYNAEEKIQEMAwsgAkEYaiABEP+GgIAAEJiGgIAADAELIAEQhoeAgAAgAkEYaiABEP+GgIAAEJmGgIAACyACKAIYRQ0BIAJBKGooAgAhAyACQSRqKAIAIQQgAkEgaigCACEFIAIoAhwhAQsgACABNgIEIABBATYCACAAQRBqIAM2AgAgAEEMaiAENgIAIABBCGogBTYCAAwBCyACQShqKAIAIQUgAkEkaigCACEDIAJBIGooAgAhBCACKAIcIQYgAkEIaiABEI2HgIAAAkACQCACLQAIQQFxRQ0AIAItAAlB/wFxQf0ARw0BIAEQhoeAgAAgAEEQaiAFNgIAIABBDGogAzYCACAAQQhqIAQ2AgAgACAGNgIEIABBADYCAAwCCyAAQoGAgIDAADcCACADRQ0BIAQgA0EBELeFgIAADAELIABCgYCAgLABNwIAIANFDQAgBCADQQEQt4WAgAALIAJBMGokgICAgAAL5QQCA38CfiOAgICAAEHgAGsiAiSAgICAACACQcAAaiABQeCbwoAAQQtBwJzCgABBBhD/hYCAAAJAAkACQAJAIAIoAkAiA0EGRg0AIAJBEGpBHGogAkHAAGpBHGooAgA2AgAgAkEQakEMaiACQcAAakEMaikCADcCACACIAIpAlQ3AiQgAiACKQJENwIUIAIgAzYCECACQQhqIAEQjYeAgAAgAkEQakEEciEEIAItAAhBAXFFDQEgAi0ACUH/AXFB/QBHDQIgARCGh4CAACAAQRhqIAJBEGpBGGopAwA3AwAgAEEQaiACQRBqQRBqKQMANwMAIABBCGogAkEQakEIaikDADcDACAAIAIpAxA3AwAMAwsgAkE4aiACQcAAakEMaikCACIFNwMAIAIgAikCRCIGNwMwIABBDGogBTcCACAAIAY3AgQgAEEGNgIADAILIABChoCAgMAANwMAAkACQAJAIAMOBQABAgQEAgsCQCACKAIYIgBFDQAgAigCFCAAQQEQt4WAgAALIAJBIGohBAwBCwJAIAIoAhgiAEUNACACKAIUIABBARC3hYCAAAsgAkEgaiEECyAEQQRqKAIAIgBFDQEgBCgCACAAQQEQt4WAgAAMAQsgAEKGgICAsAE3AwACQAJAAkAgAw4FAAECAwMCCwJAIAIoAhgiAEUNACACKAIUIABBARC3hYCAAAsgAkEgaiEEDAELAkAgAigCGCIARQ0AIAIoAhQgAEEBELeFgIAACyACQSBqIQQLIARBBGooAgAiAEUNACAEKAIAIABBARC3hYCAAAsgAkHgAGokgICAgAALiAICBH8BfiOAgICAAEEgayICJICAgIAAIAJBEGogARD4hYCAAAJAAkACQAJAIAIoAhAiA0EVRw0AIAJBHGooAgAhBCACQRhqKAIAIQMgAigCFCEFIAJBCGogARCNh4CAACACLQAIQQFxRQ0BIAItAAlB/wFxQf0ARw0CIAEQhoeAgAAgAEEMaiAENgIAIABBCGogAzYCACAAIAU2AgQgAEEVNgIADAMLIAIpAhQhBiAAIAIoAhw2AgwgACAGNwIEIAAgAzYCAAwCCyAAQQQ2AgAgA0UNASAFIANBARC3hYCAAAwBCyAAQQs2AgAgA0UNACAFIANBARC3hYCAAAsgAkEgaiSAgICAAAv5AgEHfyOAgICAAEEgayICJICAgIAAAkACQAJAAkAgAUEIaigCACIDQQNNDQACQAJAIANBfGoiBCAEIAEoAgAiBWooAAAiBkEYdCAGQQh0QYCA/AdxciAGQQh2QYD+A3EgBkEYdnJyIgZHDQAgASgCBCEBQQAhByAFIQhBASEFQQAhBAwBCyADIAQgBmsiBEkNAiABKAIEIQcCQAJAIAMgBGsiAQ0AQQEhCAwBCyABQX9KIgNFDQQgASADELaFgIAAIghFDQULIAggBSAEaiABELyRgIAAGiABIQMLIAAgCDYCDCAAIAQ2AgggACAHNgIEIAAgBTYCACAAQRBqIAE2AgAgAEEUaiADIAYgAyAGSRs2AgAgAkEgaiSAgICAAA8LIAJBHGpBADYCACACQdyMwoAANgIYIAJCATcCDCACQdSNwoAANgIIIAJBCGpB3I3CgAAQtpCAgAAACyAEIAMQspCAgAAACxCpkICAAAALIAEgAxCokICAAAALqQQBBn8CQAJAIAINAEEAIQMMAQsgAkF/akH/////AXEiBEEBaiIDQQdxIQUCQAJAIARBB08NAEEAIQMgASEEDAELIAFBPGohBCADQfj///8DcSEGQQAhAwNAIAQoAgAgBEF4aigCACAEQXBqKAIAIARBaGooAgAgBEFgaigCACAEQVhqKAIAIARBUGooAgAgBEFIaigCACADampqampqamohAyAEQcAAaiEEIAZBeGoiBg0ACyAEQURqIQQLIAVFDQAgBEEEaiEEA0AgBCgCACADaiEDIARBCGohBCAFQX9qIgUNAAsLAkACQAJAAkAgAyACQQJ0aiIEDQBBASEFDAELIARBf0oiA0UNASAEIAMQtoWAgAAiBUUNAgtBACEDIABBADYCCCAAIAQ2AgQgACAFNgIAAkAgAkUNACABIAJBA3RqIQcDQCABQQRqKAIAIgRBCHZBgP4DcSAEQRh2ciEGIARBGHQgBEEIdEGAgPwHcXIhAiABKAIAIQgCQCAAKAIEIANrIARPDQAgACADIAQQw4aAgAAgACgCACEFIAAoAgghAwsgAiAGciEGIAUgA2ogCCAEELyRgIAAGiAAIAMgBGoiBDYCCAJAIAAoAgQgBGtBA0sNACAAIARBBBDDhoCAACAAKAIIIQQLIAAgBEEEaiIDNgIIIAAoAgAiBSAEaiAGNgAAIAFBCGoiASAHRw0ACwsPCxCpkICAAAALIAQgAxCokICAAAALSAECfyAAQQhqKAIAIQEgACgCACECAkBBDEEEELaFgIAAIgANAEEMQQQQqJCAgAAACyAAIAE2AgggACABNgIEIAAgAjYCACAAC8MBAQJ/I4CAgIAAQSBrIgIkgICAgAACQAJAIAFFDQAgASgCACIDDQEgAkEcakEANgIAIAJB3IzCgAA2AhggAkIBNwIMIAJBmI/CgAA2AgggAkEIakGgj8KAABC2kICAAAALIAJBHGpBADYCACACQdyMwoAANgIYIAJCATcCDCACQYSOwoAANgIIIAJBCGpB6I7CgAAQtpCAgAAACyAAIAM2AgAgACABKQIENwIEIAFBDEEEELeFgIAAIAJBIGokgICAgAALOAEBfyOAgICAAEEQayIBJICAgIAAIAFBCGogAEEIaigCADYCACABIAApAgA3AwAgARCrhoCAAAALOgEBfyOAgICAAEEQayIBJICAgIAAIAEgACkCADcDCCABQQhqQbCPwoAAQQAgACgCCEEBEMWPgIAAAAszAQF/I4CAgIAA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FCACIAI2AiggAiACQRRqNgIAIAEgAkEYahDykICAACEADAwLIAJBLGpBATYCACACQgE3AhwgAkGglMKAADYCGCACQdyBgIAANgIEIAIgAEEEajYCFCACIAI2AiggAiACQRRqNgIAIAEgAkEYahDykICAACEADAsLIAJBLGpBATYCACACQgE3AhwgAkGAlMKAADYCGCACQdeBgIAANgIEIAIgAEEEajYCFCACIAI2AiggAiACQRRqNgIAIAEgAkEYahDykICAACEADAoLIAJBLGpBATYCACACQgE3AhwgAkHok8KAADYCGCACQdeBgIAANgIEIAIgAEEEajYCFCACIAI2AiggAiACQRRqNgIAIAEgAkEYahDykICAACEADAkLIAJBDGpB3YGAgAA2AgAgAkEsakECNgIAIAIgAEEIajYCECACQgI3AhwgAkHAk8KAADYCGCACQd2BgIAANgIEIAIgAEEQajYCFCACIAI2AiggAiACQRRqNgIIIAIgAkEQajYCACABIAJBGGoQ8pCAgAAhAAwICyACQSxqQQE2AgAgAkIBNwIcIAJBlJPCgAA2AhggAkHXgYCAADYCBCACIABBBGo2AhQgAiACNgIoIAIgAkEUajYCACABIAJBGGoQ8pCAgAAhAAwHCyACQSxqQQE2AgAgAkIBNwIcIAJB+JLCgAA2AhggAkHXgYCAADYCBCACIABBBGo2AhQgAiACNgIoIAIgAkEUajYCACABIAJBGGoQ8pCAgAAhAAwGCyACQSxqQQE2AgAgAkICNwIcIAJBwJLCgAA2AhggAkHXgYCAADYCBCACIABBBGo2AhQgAiACNgIoIAIgAkEUajYCACABIAJBGGoQ8pCAgAAhAAwFCyACQQxqQdeBgIAANgIAIAJBLGpBAjYCACACIABBBGo2AhAgAkICNwIcIAJBpJLCgAA2AhggAkHXgYCAADYCBCACIABBEGo2AhQgAiACNgIoIAIgAkEUajYCCCACIAJBEGo2AgAgASACQRhqEPKQgIAAIQAMBAsgAkEMakHXgYCAADYCACACQSxqQQI2AgAgAiAAQQRqNgIQIAJCAjcCHCACQfyRwoAANgIYIAJB14GAgAA2AgQgAiAAQRBqNgIUIAIgAjYCKCACIAJBFGo2AgggAiACQRBqNgIAIAEgAkEYahDykICAACEADAMLIAJBLGpBATYCACACQgE3AhwgAkHYkcKAADYCGCACQd6BgIAANgIEIAIgAEEEajYCFCACIAI2AiggAiACQRRqNgIAIAEgAkEYahDykICAACEADAILIAJBLGpBATYCACACQgE3AhwgAkHEkcKAADYCGCACQd+BgIAANgIEIAIgAEEEajYCFCACIAI2AiggAiACQRRqNgIAIAEgAkEYahDykICAACEADAELIAJBLGpBADYCACACQYCRwoAANgIoIAJCATcCHCACQayRwoAANgIYIAEgAkEYahDykICAACEACyACQTBqJICAgIAAIAALswYBAX8jgICAgABBEGsiAiSAgICAAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA4NAAECAwQFBgcICQoLDAALIAIgAEEEajYCDCABQeiWwoAAQQ9B1pTCgABBBiACQQxqQfiWwoAAEPeQgIAAIQAMDAsgAiAAQQRqNgIMIAFBxZbCgABBEEHWlMKAAEEGIAJBDGpB2JbCgAAQ95CAgAAhAAwLCyACIABBBGo2AgwgAUG7lsKAAEEKQciVwoAAQQMgAkEMakG4lcKAABD3kICAACEADAoLIAIgAEEEajYCDCABQa6WwoAAQQ1ByJXCgABBAyACQQxqQbiVwoAAEPeQgIAAIQAMCQsgAiAAQQhqNgIIIAIgAEEQajYCDCABQf+VwoAAQQ9BjpbCgABBCCACQQhqQZiWwoAAQaiWwoAAQQYgAkEMakGYlsKAABD4kICAACEADAgLIAIgAEEEajYCDCABQfWVwoAAQQpByJXCgABBAyACQQxqQbiVwoAAEPeQgIAAIQAMBwsgAiAAQQRqNgIMIAFB6pXCgABBC0HIlcKAAEEDIAJBDGpBuJXCgAAQ95CAgAAhAAwGCyACIABBBGo2AgwgAUHelcKAAEEIQeaVwoAAQQQgAkEMakG4lcKAABD3kICAACEADAULIAIgAEEEajYCCCACIABBEGo2AgwgAUHLlcKAAEEIQdOVwoAAQQsgAkEIakG4lcKAAEHIlcKAAEEDIAJBDGpBuJXCgAAQ+JCAgAAhAAwECyACIABBBGo2AgggAiAAQRBqNgIMIAFBoJXCgABBDEGslcKAAEELIAJBCGpBuJXCgABByJXCgABBAyACQQxqQbiVwoAAEPiQgIAAIQAMAwsgAiAAQQRqNgIM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P3FBgAFyOgANIAIgAUESdkEHcUHwAXI6AAxBBCEBDAELIAIgAUE/cUGAAXI6AA4gAiABQQx2QeABcjoADCACIAFBBnZBP3FBgAFyOgANQQMhAQsCQCAAKAIEIAAoAggiA2sgAU8NACAAIAMgARDDhoCAACAAKAIIIQMLIAAoAgAgA2ogAkEMaiABELyRgIAAGiAAIAMgAWo2AggLIAJBEGokgICAgABBAAtLAQF/AkAgACgCBCAAKAIIIgNrIAJPDQAgACADIAIQw4aAgAAgACgCCCEDCyAAKAIAIANqIAEgAhC8kYCAABogACADIAJqNgIIQQALFwAgACgCACAAQQhqKAIAIAEQhZGAgAALDAAgACABEJWGgIAAC6gDAgF/AX4jgICAgABBoAFrIgMkgICAgAAgAyACNgIMIAMgATYCCCADQdAAaiABIAIQlIaAgAACQAJAAkAgAygCUA0AIAMgAykCVDcDYCADQQA2AnAgA0IBNwNoIANB+ABqIANB6ABqQcSPwoAAEOyQgIAAIANB4ABqIANB+ABqEKiMgIAARQ0BQdyPwoAAQTcgA0EQakGUkMKAAEHwkMKAABDakICAAAALIANBEGpBDGogA0HYAGooAgAiAjYCACADIAMpA1AiBDcCFCAAIAQ3AgQgAEEMaiACNgIAIABBFTYCACADQQ02AhAMAQsgA0EcaiADQfAAaigCADYCACADIAMpA2g3AhQgA0EDNgIQIANBzoGAgAA2AlQgAyADQQhqNgJQIANBATYCjAEgA0IBNwJ8IANBtJ/CgAA2AnggAyADQdAAajYCiAEgA0HoAGogA0H4AGoQrZCAgAAgAEEEaiADQegAahCvkICAACAAQRQ2AgACQCADKAJsIgBFDQAgAygCaCAAQQEQt4WAgAALIANBEGoQy4aAgAALIANBoAFqJICAgIAACwwAIAAgARDkkICAAAvdAQECfyOAgICAAEEgayIEJICAgIAAAkACQEEMQQQQtoWAgAAiBUUNACAFIAM2AgggBSADNgIEIAUgAjYCAAJAAkAgBRCBgICAACIDDQAgAEEANgIADAELIAMoAgAiAkUNAiAAIAI2AgAgACADKQIENwIEIANBDEEEELeFgIAACyAFQQxBBBC3hYCAACAEQSBqJICAgIAADwtBDEEEEKiQgIAAAAsgBEEcakEANgIAIARB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AkEcakEANgIAIAJBpKrCgAA2AhggAkIBNwIMIAJBvKrCgAA2AgggASACQQhqEPKQgIAAIQAMAQsgAiAANgIEIAJBHGpBATYCACACQgE3AgwgAkGkqsKAADYCCCACQf2BgIAANgIkIAIgAkEgajYCGCACIAJBLGo2AiAgAiACQQRqNgIsIAEgAkEIahDykICAACEACyACQTBqJICAgIAAIAALMQEBfwJAQYAIQQEQtoWAgAAiAQ0AQYAIQQEQqJCAgAAACyAAQoAINwIEIAAgATYCAAuxAQACQAJAIAINAAJAIAEoAgQgASgCCCICa0EESw0AIAEgAkEFEIOHgIAAIAEoAgghAgsgASACQQVqNgIIIAEoAgAgAmoiAUEAKADEqsKAADYAACABQQRqQQAtAMiqwoAAOgAADAELAkAgASgCBCABKAIIIgJrQQNLDQAgASACQQQQg4eAgAAgASgCCCECCyABIAJBBGo2AgggASgCACACakH05NWrBjYAAAsgAEEANgIAC9YBAQR/I4CAgIAAQRBrIgMkgICAgAAgA0EAOwEMIAMgAiACQf8BcSIEQQpuIgVBCmxrQTByOgAOQQIhBgJAIARBCU0NACADIAVBCnBBMHI6AA1BASEGIARB5ABJDQAgAyACQf8BcUHkAG5BMHI6AAxBACEGCwJAIAEoAgQgASgCCCICayAGQQNzIgRPDQAgASACIAQQg4eAgAAgASgCCCECCyABKAIAIAJqIANBDGogBmogBBC8kYCAABogAEEANgIAIAEgAiAEajYCCCADQRBqJICAgIAAC/cBAwN/AX4CfyOAgICAAEEgayIDJICAgIAAQQAhBCADQRhqQQA2AgAgA0EQakIANwMAIANCADcDCANAIANBCGogBGoiBUETaiACIAJCCoAiBkIKfn2nQTByOgAAAkAgAkIKWg0AIAVBE2ohBwJAIAEoAgQgASgCCCIFa0EBIARrIghPDQAgASAFIAgQg4eAgAAgASgCCCEFCyABKAIAIAVqIAcgCBC8kYCAABogAEEANgIAIAEgBSAEa0EBajYCCCADQSBqJICAgIAADwsgBEESaiEFIARBf2ohBCAGIQIgBUEUSQ0AC0F/QRRBrKvCgAAQt5CAgAAAC50PAQV/I4CAgIAAQRBrIgQkgICAgAACQCABKAIIIgUgASgCBEcNACABIAUQ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AxC8kYCAABogBSADaiEFCyABIAU2AgggAiAGRw0ACwsCQCAFIAEoAgRHDQAgASAFEIKHgIAAIAEoAgghBQsgASgCACAFakEiOgAAIABBADYCACABIAEoAghBAWo2AgggBEEQaiSAgICAAAtOAQF/AkAgASgCBCABKAIIIgJrQQNLDQAgASACQQQQg4eAgAAgASgCCCECCyAAQQA2AgAgASACQQRqNgIIIAEoAgAgAmpB7uqx4wY2AAALEAAgACABIAUgBhD5hoCAAAtaAQF/AkAgASgCCCIEIAEoAgRHDQAgASAEEIKHgIAAIAEoAgghBAsgASgCACAEakHbADoAACAAIAE2AgQgAEEANgIAIABBCGpBAToAACABIAEoAghBAWo2AggLWgEBfwJAIAEoAggiBSABKAIERw0AIAEgBRCCh4CAACABKAIIIQULIAEoAgAgBWpB+wA6AAAgACABNgIEIABBADYCACAAQQhqQQE6AAAgASABKAIIQQFqNgIIC8kCAgJ/AX4jgICAgABBIGsiCCSAgICAAAJAIAEoAggiCSABKAIERw0AIAEgCRCCh4CAACABKAIIIQkLIAEoAgAgCWpB+wA6AAAgASABKAIIQQFqNgIIIAhBEGogASAFIAYQ+YaAgAACQAJAIAgoAhANAAJAIAEoAggiCSABKAIERw0AIAEgCRCCh4CAACABKAIIIQkLIAEoAgAgCWpBOjoAACABIAEoAghBAWoiCTYCCAJAIAkgASgCBEcNACABIAkQgoeAgAAgASgCCCEJCyABKAIAIAlqQfsAOgAAIAAgATYCBCAAQQA2AgAgAEEIakEBOgAAIAEgASgCCEEBajYCCAwBCyAIQQhqIAhBEGpBDGooAgAiATYCACAIIAgpAhQiCjcDACAAQQxqIAE2AgAgACAKNwIEIABBATYCAAsgCEEgaiSAgICAAAsEACAACxAAIABBAToABCAAIAE2AgAL2gEAAkACQCACRQ0AAkACQAJAAkACQAJAIAFBAEgNACADKAIIDQEgAQ0CQQEhAgwECyAAQQhqQQA2AgAMBgsCQCADKAIEIgINAAJAIAENAEEBIQIMBAsgAUEBELaFgIAAIQIMAgsgAygCACACQQEgARC4hYCAACECDAELIAFBARC2hYCAACECCyACRQ0BCyAAIAI2AgQgAEEIaiABNgIAIABBADYCAA8LIAAgATYCBCAAQQhqQQE2AgAgAEEBNgIADwsgACABNgIEIABBCGpBADYCAAsgAEEBNgIAC+YBAQN/I4CAgIAAQSBrIgIkgICAgAACQAJAIAFBAWoiAUUNACAAQQRqKAIAIgNBAXQiBCABIAQgAUsbIgFBCCABQQhLGyIBQX9zQR92IQQCQAJAIANFDQAgAkEBNgIYIAIgAzYCFCACIAAoAgA2AhAMAQsgAkEANgIYCyACIAEgBCACQRBqEIGHgIAAIAIoAgQhAwJAIAIoAgANACAAIAM2AgAgAEEEaiABNgIADAILIAJBCGooAgAiAEGBgICAeEYNASAARQ0AIAMgABCokICAAAALEKmQgIAAAAsgAkEgaiSAgICAAAvoAQECfyOAgICAAEEgayIDJICAgIAAAkACQCABIAJqIgIgAUkNACAAQQRqKAIAIgFBAXQiBCACIAQgAksbIgJBCCACQQhLGyICQX9zQR92IQQCQAJAIAFFDQAgA0EBNgIYIAMgATYCFCADIAAoAgA2AhAMAQsgA0EANgIYCyADIAIgBCADQRBqEIGHgIAAIAMoAgQhAQJAIAMoAgANACAAIAE2AgAgAEEEaiACNgIADAILIANBCGooAgAiAEGBgICAeEYNASAARQ0AIAEgABCokICAAAALEKmQgIAAAAsgA0EgaiSAgICAAAvOEQEKfyOAgICAAEEwayIDJICAgIAAAkACQAJAAkACQAJAAkACQAJAIAINAEEAIQQgA0EANgIIIAMgAjYCBEEBIQEgA0EBNgIAIANBADYCECADQQA2AhRBACEFDAELIAJBf0wNByACQQEQtoWAgAAiBEUNBiADQQA2AgggAyACNgIEIAMgBDYCACADQQA2AhAgA0EANgIUQQAhBEEAIQZBACEFQQAhB0EAIQgDQAJAIAEtAAAiCUH/AXEiCkEgTw0AQQAhCwwECwJAAkACQAJAAkACQAJAAkACQAJAIAVBAXENACAGQQFxDQEgCkHcAEcNAkEBIQZBACEFDAkLAkAgCUFQakH/AXFBCkkNAEEMIQsgCkG/f2oOJgAAAAAAAA0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NAAAAAAAADQsgB0EDSw0CIANBFGogB2ogCToAAEEBIQUgB0EBaiIHQQRHDQggAygCFCIFQVBqIgdB/wFxQQpJDQUgBUG/f2pB/wFxQQZJDQMgBUGff2pB/wFxQQZPDQQgBUGpf2ohBwwFC0EBIQVBDCELQQEhBgJAAkACQAJAAkACQCAKQV5qDlQAERERERERERERERERABERERERERERERERERERERERERERERERERERERERERERERERERERERERERERABERERERAREREQIRERERERERAxEREQQRBQ0RCwJAIAQgAygCBEcNACADIAQQgoeAgAAgAygCCCEECyADKAIAIARqIAk6AAAgAygCCEEBaiEEDAoLAkAgBCADKAIERw0AIAMgBBCCh4CAACADKAIIIQQLIAMoAgAgBGpBCDoAACADKAIIQQFqIQQMCQsCQCAEIAMoAgRHDQAgAyAEEIKHgIAAIAMoAgghBAsgAygCACAEakEMOgAAIAMoAghBAWohBAwICwJAIAQgAygCBEcNACADIAQQgoeAgAAgAygCCCEECyADKAIAIARqQQo6AAAgAygCCEEBaiEEDAcLAkAgBCADKAIERw0AIAMgBBCCh4CAACADKAIIIQQLIAMoAgAgBGpBDToAACADKAIIQQFqIQQMBgsCQCAEIAMoAgRHDQAgAyAEEIKHgIAAIAMoAgghBAsgAygCACAEakEJOgAAIAMoAghBAWohBAwFCwJAIAhB//8DcUEBRw0AQREhCwwLCwJAIAQgAygCBEcNACADIAQQgoeAgAAgAygCCCEECyADKAIAIARqIAk6AAAgAygCCEEBaiEEQQAhCAwECyAHQQRBoKzCgAAQt5CAgAAACyAFQUlqIQcMAQsgA0EsakEANgIAIANBvKvCgAA2AiggA0IBNwIcIANB0KzCgAA2AhggA0EYakHYrMKAABC2kICAAAALAkAgBUEIdiIKQVBqIglB/wFxQQpJDQACQAJAIApBv39qQf8BcUEGSQ0AIApBn39qQf8BcUEGTw0BIApBqX9qIQkMAgsgCkFJaiEJDAELIANBLGpBADYCACADQbyrwoAANgIoIANCATcCHCADQdCswoAANgIYIANBGGpB2KzCgAAQtpCAgAAACwJAIAVBEHYiBkFQaiIKQf8BcUEKSQ0AAkACQCAGQb9/akH/AXFBBkkNACAGQZ9/akH/AXFBBk8NASAGQal/aiEKDAILIAZBSWohCgwBCyADQSxqQQA2AgAgA0G8q8KAADYCKCAD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BAUGBwgJCgsMDQ4PEBESExQACyACQdazwoAANgIoQSIhAAwUCyACQb2zwoAANgIoQRkhAAwTCyACQaGzwoAANgIoQRwhAAwSCyACQYazwoAANgIoQRshAAwRCyACQeeywoAANgIoQR8hAAwQCyACQcGywoAANgIoQSYhAAwPCyACQZmywoAANgIoQSghAAwOCyACQeKxwoAANgIoQTchAAwNCyACQbuxwoAANgIoQSchAAwMCyACQYOxwoAANgIoQTghAAwLCyACQcuwwoAANgIoQTghAAwKCyACQZ2wwoAANgIoQS4hAAwJCyACQYWwwoAANgIoQRghAAwICyACQfavwoAANgIoQQ8hAAwHCyACQeqvwoAANgIoQQwhAAwGCyACQc+vwoAANgIoQRshAAwFCyACQbSvwoAANgIoQRshAAwECyACQeWuwoAANgIoQc8AIQAMAwsgAkGprsKAADYCKEE8IQAMAgsgAkHwrcKAADYCKEE5IQAMAQsgAiAAQQRqKAIANgIoIABBDGooAgAhAAsgAkEcakEBNgIAIAJB/oGAgAA2AiQgAiAANgIsIAJCATcCDCACQeitwoAANgIIIAIgAkEoajYCICACIAJBIGo2AhggASACQQhqEPKQgIAAIQAgAkEwaiSAgICAACAAC0kBAX8CQCABKAIIIgMgASgCBEcNACABIAMQgoeAgAAgASgCCCEDCyABKAIAIANqQd0AOgAAIABBADYCACABIAEoAghBAWo2AggLHwAgACgCACgCACIAKAIAIABBCGooAgAgARCFkYCAAAtJAQF/AkAgASgCCCIDIAEoAgRHDQAgASADEIKHgIAAIAEoAgghAwsgASgCACADakH9ADoAACAAQQA2AgAgASABKAIIQQFqNgIIC4QBAQF/AkAgASgCCCIDIAEoAgRHDQAgASADEIKHgIAAIAEoAgghAwsgASgCACADakH9ADoAACABIAEoAghBAWoiAzYCCAJAIAMgASgCBEcNACABIAMQgoeAgAAgASgCCCEDCyABKAIAIANqQf0AOgAAIABBADYCACABIAEoAghBAWo2AggLyAEBBH8jgICAgABBMGsiASSAgICAACAAQRRqKAIAIQIgACgCACEDAkACQAJAAkAgACgCBCIEDgIAAQILIAINAUH4s8KAAEEAEIGIgIAAIQAMAgsgAg0AIAMoAgAgAygCBBCBiICAACEADAELIAFBGGpBEGogAEEQaigCADYCACABIAQ2AhwgASADNgIYIAEgAjYCLCABIAApAgg3AyAgAUEIaiABQRhqEK2QgIAAIAFBCGoQg4iAgAAhAAsgAUEwaiSAgICAACAAC8wMAg9/An4jgICAgABBkAJrIgIkgICAgAACQAJAAkACQAJAAkAgASgCACIDRQ0AIAEoAiAhBCABKAIcIQUgASgCGCEGIAEoAhAhByABKAIMIQggASgCBCEJAkACQAJAAkACQCABKAIIIgpBIEYNACACQYKAgIAANgLsASACIAo2AtgBIAIgAkHYAWo2AugBIAJBATYClAEgAkIBNwKEASACQZi0woAANgKAASACIAJB6AFqNgKQASACQTBqIAJBgAFqEK2QgIAAIABBDGogAkEwahCDiICAADYCACAAQeMAOgAIIABCATcDAAJAIAlFDQAgAyAJQQEQt4WAgAALIAcNAQwICyABKAIUIQsgAkEQaiADQSAQwY6AgAAgAUEoaigCACEMIAFBLGooAgAhDSABKAIkIQ4gAkHlADoAgAEgAiAOIA1BMGxqNgL0ASACIA42AvABIAIgDDYC7AEgAiAONgLoASACIAJBgAFqNgL4ASACQdgBaiACQegBahCHiICAACACLQCAASIOQeUARg0DQQIhDCACQfwAakECaiACLQCDAToAACACIAIvAIEBOwF8IAIoAoQBIQsgAigCiAEhDyACKAKMASEQIAJBMGogAkGQAWpByAAQvJGAgAAaIAIoAtwBIg1FDQEgAkGAAmogDTYCACACQfwBaiACKALYASIMNgIAIAIgDTYC8AEgAiAMNgLsAUEAIQwgAkEANgLoASACKALgASENDAILIAggB0EBELeFgIAADAYLIAJBAjYC6AFBACENCyACIA02AogCIAIgDDYC+AEgAkHoAWoQiIiAgAAgAEELaiACQf4Aai0AADoAACAAQQlqIAIvAXw7AAAgAEEYaiACQTBqQcgAELyRgIAAGiAAQRRqIBA2AgAgAEEQaiAPNgIAIABBDGogCzYCACAAIA46AAggAEIBNwMADAMLIAIoAuABIQ0gAigC3AEhDCACKALYASEPIAIgBiAEQQxsajYCPCACIAY2AjggAiAFNgI0IAIgBjYCMCACQYABaiACQTBqEOOHgIAAIAItAIABIhBB5QBGDQEgAiACKQCBATcD6AEgAiACQYgBaikAADcA7wEgAEEYaiACQYABakEQakHIABC8kYCAABogAEEQaiACKQDvATcAACAAQQlqIAIpA+gBNwAAIAAgEDoACCAAQgE3AwACQAJAIAxFDQAgAkGAAWpBGGogDDYCACACQZQBaiAPNgIAIAIgDDYCiAEgAiAPNgKEAUEAIQAgAkEANgKAAQwBC0ECIQAgAkECNgKAAUEAIQ0LIAIgDTYCoAEgAiAANgKQASACQYABahCIiICAAAwCCyACQZQBakEANgIAIAJB+LPCgAA2ApABIAJCATcChAEgAkHEtMKAADYCgAEgAEEMaiACQYABahCVh4CAADYCACAAQeMAOgAIIABCATcDAAwDCyACQdgBakEIaiIOIAJBgAFqQQxqKAIANgIAIAIgAikChAE3A9gBIABByABqIAJBEGpBGGopAwA3AAAgAEHAAGogAkEQakEQaikDADcAACAAQThqIAJBEGpBCGopAwA3AAAgAEEwaiACKQMQNwAAIABB2ABqIA02AgAgAEHUAGogDDYCACAAQdAAaiAPNgIAIAIgATUCMCABNQI0EKaLgIAAIAIpAwAhESACKQMIIRIgAEEgaiALNgIAIABBHGogBzYCACAAQRhqIAg2AgAgAEEkaiACKQPYATcCACAAQSxqIA4oAgA2AgAgAEEQaiASNwMAIAAgETcDCCAAQgA3AwAgCUUNAyADIAlBARC3hYCAAAwDCwJAIAlFDQAgAyAJQQEQt4WAgAALAkAgB0UNACAIIAdBARC3hYCAAAsgDkHlAEYNAgsCQCAERQ0AIARBDGwhDiAGIQADQAJAIABBBGooAgAiA0UNACAAKAIAIANBARC3hYCAAAsgAEEMaiEAIA5BdGoiDg0ACwsCQCAFRQ0AIAYgBUEMbEEEELeFgIAACyAKQSBGDQELIAEoAiQhAwJAIAFBLGooAgAiAEUNACAAQTBsIQ4gAyEAA0AgABDCh4CAACAAQTBqIQAgDkFQaiIODQALCyABQShqKAIAIgBFDQAgAyAAQTBsQQQQt4WAgAALIAJBkAJqJICAgIAAC/gHAgx/An4jgICAgABBgAFrIgIkgICAgAAgAiABQQhqKAIANgIsIAIgASgCACIDNgIoIAJBwABqIAJBKGoQ/YeAgAACQAJAAkACQCACKAJAIgRFDQAgAkEIakEIaiACQcAAakEgaikDADcDACACQRhqIgUgAkHAAGpBKGopAwA3AwAgAkEIakEYaiIGIAJBwABqQTBqKQMANwMAIAIgAikDWDcDCCACKAJUIQcgAigCUCEIIAIoAkwhCSACKAJIIQogAigCRCELIAIgAUEUaigCADYCfCACIAFBDGoiDCgCADYCeCACQcAAaiACQfgAahD9h4CAACACKAJAIg1FDQEgACACKQJUNwJMIAJBMGpBCGogAkHAAGpBDGopAgAiDjcDACAAQdQAaiACQdwAaikCADcCACAAQdwAaiACQeQAaikCADcCACAAQeQAaiACQewAaikCADcCACAAQewAaiACQfQAaigCADYCACACIAIpAkQiDzcDMCAAQcQAaiAONwIAIAAgDzcCPCAAIAc2AhQgACAINgIQIAAgCTYCDCAAIAo2AgggACALNgIEIAAgBDYCACAAIAIpAwg3AhggAEEgaiACQQhqQQhqKQMANwIAIABBKGogBSkDADcCACAAQTBqIAYpAwA3AgAgACANNgI4IAFBBGooAgAiAEUNAyADIABBARC3hYCAAAwDCyACKQJEIQ4gAEEUaiACQcAAakEMaikCADcCACAAQQxqIA43AgAgAEHbADoACCAAQQA2AgAMAQsgAkEwakEIaiACQcAAakEMaikCACIONwMAIAIgAikCRCIPNwMwIAJBywBqIA43AAAgAEHbADoACCAAQQA2AgAgAiAPNwBDIABBCWogAikAQDcAACAAQRFqIAJBwABqQQhqKQAANwAAIABBGGogAkHPAGooAAA2AAACQCALRQ0AIAQgC0EBELeFgIAACwJAIAdFDQAgCSAHQfAAbGohBSAJIQsDQAJAIAtBDGooAgAiDEUNACALKAIEIQAgDEEUbCEEA0ACQAJAAkACQCAALQAADgQAAAABAwsgAEEIaiEMDAELIABBBGohDAsgDEEEaigCACIHRQ0AIAwoAgAgB0EBELeFgIAACyAAQRRqIQAgBEFsaiIEDQALCyALQfAAaiEAAkAgC0EIaigCACIMRQ0AIAsoAgQgDEEUbEEEELeFgIAACyAAIQsgACAFRw0ACwsgCEUNACAJIAhB8ABsQQQQt4WAgAALAkAgAUEEaigCACIARQ0AIAMgAEEBELeFgIAACyABQQxqIQwLAkAgAUEQaigCACIARQ0AIAwoAgAgAEEBELeFgIAACyACQYABaiSAgICAAAvDAQEBfwJAAkAgAkUNAAJAAkACQAJAAkAgAUEASA0AIAMoAghFDQIgAygCBCIEDQEgAQ0DIAIhAwwECyAAQQhqQQA2AgAMBQsgAygCACAEIAIgARC4hYCAACEDDAILIAENACACIQMMAQsgASACELaFgIAAIQMLAkAgA0UNACAAIAM2AgQgAEEIaiABNgIAIABBADYCAA8LIAAgATYCBCAAQQhqIAI2AgAMAQsgACABNgIEIABBCGpBADYCAAsgAEEBNgIAC/UBAQR/I4CAgIAAQSBrIgIkgICAgAACQAJAIAFBAWoiAUUNACAAQQRqKAIAIgNBAXQiBCABIAQgAUsbIgFBBCABQQRLGyIBQfAAbCEEIAFByqSSCUlBAnQhBQJAAkAgA0UNACACQQQ2AhggAiADQfAAbDYCFCACIAAoAgA2AhAMAQsgAkEANgIYCyACIAQgBSACQRBqEJiHgIAAIAIoAgQhAwJAIAIoAgANACAAIAM2AgAgAEEEaiABNgIADAILIAJBCGooAgAiAEGBgICAeEYNASAARQ0AIAMgABCokICAAAALEKmQgIAAAAsgAkEgaiSAgICAAAv0AQEEfyOAgICAAEEgayICJICAgIAAAkACQCABQQFqIgFFDQAgAEEEaigCACIDQQF0IgQgASAEIAFLGyIBQQQgAUEESxsiAUEDdCEEIAFBgICAgAFJQQJ0IQUCQAJAIANFDQAgAkEENgIYIAIgA0EDdDYCFCACIAAoAgA2AhAMAQsgAkEANgIYCyACIAQgBSACQRBqEJiHgIAAIAIoAgQhAwJAIAIoAgANACAAIAM2AgAgAEEEaiABNgIADAILIAJBCGooAgAiAEGBgICAeEYNASAARQ0AIAMgABCokICAAAALEKmQgIAAAAsgAkEgaiSAgICAAAvzAQEEfyOAgICAAEEgayICJICAgIAAAkACQCABQQFqIgFFDQAgAEEEaigCACIDQQF0IgQgASAEIAFLGyIBQQQgAUEESxsiAUEUbCEEIAFB58yZM0lBAnQhBQJAAkAgA0UNACACQQQ2AhggAiADQRRsNgIUIAIgACgCADYCEAwBCyACQQA2AhgLIAIgBCAFIAJBEGoQmIeAgAAgAigCBCEDAkAgAigCAA0AIAAgAzYCACAAQQRqIAE2AgAMAgsgAkEIaigCACIAQYGAgIB4Rg0BIABFDQAgAyAAEKiQgIAAAAsQqZCAgAAACyACQSBqJICAgIAAC/cBAQN/I4CAgIAAQSBrIgMkgICAgAACQAJAIAEgAmoiAiABSQ0AIABBBGooAgAiAUEBdCIEIAIgBCACSxsiAkEEIAJBBEsbIgJBxABsIQQgAkHiw4cPSUECdCEFAkACQCABRQ0AIANBBDYCGCADIAFBxABsNgIUIAMgACgCADYCEAwBCyADQQA2AhgLIAMgBCAFIANBEGoQmIeAgAAgAygCBCEBAkAgAygCAA0AIAAgATYCACAAQQRqIAI2AgAMAgsgA0EIaigCACIAQYGAgIB4Rg0BIABFDQAgASAAEKiQgIAAAAsQqZCAgAAACyADQSBqJICAgIAAC+gBAQJ/I4CAgIAAQSBrIgMkgICAgAACQAJAIAEgAmoiAiABSQ0AIABBBGooAgAiAUEBdCIEIAIgBCACSxsiAkEIIAJBCEsbIgJBf3NBH3YhBAJAAkAgAUUNACADQQE2AhggAyABNgIUIAMgACgCADYCEAwBCyADQQA2AhgLIAMgAiAEIANBEGoQmIeAgAAgAygCBCEBAkAgAygCAA0AIAAgATYCACAAQQRqIAI2AgAMAgsgA0EIaigCACIAQYGAgIB4Rg0BIABFDQAgASAAEKiQgIAAAAsQqZCAgAAACyADQSBqJICAgIAAC/cBAQN/I4CAgIAAQSBrIgMkgICAgAACQAJAIAEgAmoiAiABSQ0AIABBBGooAgAiAUEBdCIEIAIgBCACSxsiAkEEIAJBBEsbIgJB8ABsIQQgAkHKpJIJSUECdCEFAkACQCABRQ0AIANBBDYCGCADIAFB8ABsNgIUIAMgACgCADYCEAwBCyADQQA2AhgLIAMgBCAFIANBEGoQmIeAgAAgAygCBCEBAkAgAygCAA0AIAAgATYCACAAQQRqIAI2AgAMAgsgA0EIaigCACIAQYGAgIB4Rg0BIABFDQAgASAAEKiQgIAAAAsQqZCAgAAACyADQSBqJICAgIAACw8AIAAoAgAgARChioCAAAsCAAsUACAAQSg2AgQgAEHMtMKAADYCAAsUACAAQSg2AgQgAEHMtMKAADYCAAsJACAAQQA2AgALCQAgAEEANgIACwkAIABBADYCAAsCAAsCAAsMAELi6u+gxtGB2VALDQBCztOCu7fd+7C6fwupBAICfgN/IABBA3RBAnIiAK0hAwJAAkAgAEH/AEsNACACKAIIIQAMAQsgAigCCCEAIAMhBANAIASnQYB/ciEFAkACQCACKAIEIABGDQAgACEGDAELIAIgAEEBEJ2HgIAAIAIoAgghBgsgAiAGQQFqIgA2AgggAigCACAGaiAFOgAAIARC//8AViEGIARCB4giAyEEIAYNAAsLIAOnIQUCQCACKAIEIABHDQAgAiAAQQEQnYeAgAAgAigCCCEACyACIABBAWoiBjYCCCACKAIAIgcgAGogBToAACABEL6NgIAAIgCtIQQCQAJAIABBgAFPDQAgBCEDDAELA0AgBKdBgH9yIQUCQAJAIAIoAgQgBkYNACAGIQAMAQsgAiAGQQEQnYeAgAAgAigCACEHIAIoAgghAAsgAiAAQQFqIgY2AgggByAAaiAFOgAAIARC//8AViEAIARCB4giAyEEIAANAAsLIAOnIQUCQCACKAIEIgAgBkcNACACIAZBARCdh4CAACACKAIEIQAgAigCCCEGCyACKAIAIAZqIAU6AAAgAiAGQQFqIgY2AgggASgCACEHAkACQAJAIAAgBmsiBSABQQhqKAIAIgBPDQAgAiAGIAAQnYeAgAAgAigCBCACKAIIIgZrIQUMAQsgAEUNAQsCQCAFIABPDQAgAiAGIAAQnYeAgAAgAigCCCEGCyACKAIAIAZqIAcgABC8kYCAABogAiAGIABqNgIICwsXACAAKAIAIABBBGooAgAgARCCkYCAAAsXACAAKAIAIABBCGooAgAgARCCkYCAAAsXACAAKAIAIABBCGooAgAgARCFkYCAAAsXACAAKAIAIABBBGooAgAgARCFkYCAAAv5AwECfyOAgICAAEEQayICJICAgIAAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAAIgNBpX9qQQUgA0HaAEsbDgoAAQIDBAUGBwgJAAsgAiAAQQRqNgIMIAFB7LbCgABBBSACQQxqQfS2woAAEP2QgIAAIQAMCQsgAiAAQQRqNgIMIAFB0LbCgABBCSACQQxqQdy2woAAEP2QgIAAIQAMCAsgAiAAQQRqNgIMIAFBsLbCgABBDiACQQxqQcC2woAAEP2QgIAAIQAMBwsgAiAAQQRqNgIMIAFBkLbCgABBDyACQQxqQaC2woAAEP2QgIAAIQAMBgsgAiAAQQhqNgIMIAFB+LXCgABBBSACQQxqQYC2woAAEP2QgIAAIQAMBQsgAiAANgIMIAFB4LXCgABBBSACQQxqQei1woAAEP2QgIAAIQAMBAsgAiAAQQRqNgIMIAFByLXCgABBCCACQQxqQdC1woAAEP2QgIAAIQAMAwsgAiAAQQRqNgIMIAFBpLXCgABBESACQQxqQbi1woAAEP2QgIAAIQAMAgsgAiAAQQRqNgIMIAFBjLXCgABBBiACQQxqQZS1woAAEP2QgIAAIQAMAQsgAiAAQQRqNgIMIAFB9LTCgABBBiACQQxqQfy0woAAEP2QgIAAIQALIAJBEGokgICAgAAgAAsPACAAKAIAIAEQt42AgAALDwAgACgCACABEOyJgIAACw8AIAAoAgAgARCfi4CAAAsPACAAKAIAIAEQi4iAgAALDwAgACgCACABEJ6LgIAAC4YCAQR/IAAoAgAhAQJAIAAoAggiAkUNACACQQxsIQMgASECA0ACQCACQQRqKAIAIgRFDQAgAigCACAEQQEQt4WAgAALIAJBDGohAiADQXRqIgMNAAsLAkAgAEEEaigCACICRQ0AIAEgAkEMbEEEELeFgIAACwJAIABBEGooAgAiAkUNACAAKAIMIAJBARC3hYCAAAsgACgCGCEBAkAgAEEgaigCACICRQ0AIAJBDGwhAyABIQIDQAJAIAJBBGooAgAiBEUNACACKAIAIARBARC3hYCAAAsgAkEMaiECIANBdGoiAw0ACwsCQCAAQRxqKAIAIgJFDQAgASACQQxsQQQQt4WAgAALC58FAQF/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAAAOLwEAAgMEBQYHCBcJChcXCxcMDQ4XFxcXFxcPFxcXEBcXFxcXERcSFxcXFxcXExQVFwsgAEEEaiEADBULAkAgAEEIaigCACIBRQ0AIAAoAgQgAUEBELeFgIAACyAAQRBqIQAMFAsCQCAAQRRqKAIAIgFFDQAgAEEQaigCACABQQEQt4WAgAALIABBHGooAgAiAUEESw0UIAFBA0YNFCAAQSBqIQAMEwsgAEEEaiEADBILIABBBGohAAwRCyAAQQRqIQAMEAsgAEEYaiEADA8LIABBBGohAAwOCyAAQQRqIQAMDQsCQCAAQRhqLQAAQX9qDigADgAAAA4ODgAODg4ODg4ODg4ODg4ODg4ADg4ODg4ODg4ODg4AAA4ADgsgAEEcaiEADAwLIABBBGohAAwLCyAAQQRqIQAMCgsgAEEEaiEADAkLIABBBGohAAwICwJAIABBCGooAgAiAUUNACAAKAIEIAFBARC3hYCAAAsgAEEQaigCACIBQQRLDQggAUEDRg0IIABBFGohAAwHCyAAKAIEIgFBBEsNByABQQNGDQcgAEEIaiEADAYLIAAoAgQiAUEESw0GIAFBA0YNBiAAQQhqIQAMBQsgACgCBCIBQQRLDQUgAUEDRg0FIABBCGohAAwECwJAIABBCGooAgAiAUUNACAAKAIEIAFBARC3hYCAAAsgAEEQaiEADAMLIABBBGohAAwCCyAAQQRqIQAMAQsCQCAAQQhqKAIAIgFFDQAgACgCBCABQQEQt4WAgAALIABBEGohAAsgAEEEaigCACIBRQ0AIAAoAgAgAUEBELeFgIAACwtRAQJ/AkAgACgCACIBKAIARQ0AIAEQt4eAgAALAkAgASgCBCICRQ0AIAFBCGooAgAiAUUNACACIAFBARC3hYCAAAsgACgCAEEQQQQQt4WAgAALmQQEAX4DfwF+AX8CQCAAKQMAIgJQDQACQCABKAIEIAEoAggiA0cNACABIANBARCdh4CAACABKAIIIQMLIAEgA0EBaiIENgIIIAEoAgAiBSADakEIOgAAAkACQCACQoABWg0AIAIhBgwBCwNAIAKnQYB/ciEHAkACQCABKAIEIARGDQAgBCEDDAELIAEgBEEBEJ2HgIAAIAEoAgAhBSABKAIIIQMLIAEgA0EBaiIENgIIIAUgA2ogBzoAACACQv//AFYhAyACQgeIIgYhAiADDQALCyAGpyEDAkAgASgCBCAERw0AIAEgBEEBEJ2HgIAAIAEoAgghBAsgASAEQQFqNgIIIAEoAgAgBGogAzoAAAsCQCAAKAIIIgNFDQACQCABKAIEIAEoAggiB0cNACABIAdBARCdh4CAACABKAIIIQcLIAEgB0EBaiIENgIIIAEoAgAiBSAHakEQOgAAIAOsIQICQAJAIANBgAFPDQAgAiEGDAELA0AgAqdBgH9yIQcCQAJAIAEoAgQgBEYNACAEIQMMAQsgASAEQQEQnYeAgAAgASgCACEFIAEoAgghAwsgASADQQFqIgQ2AgggBSADaiAHOgAAIAJC//8AViEDIAJCB4giBiECIAMNAAsLIAanIQMCQCABKAIEIARHDQAgASAEQQEQnYeAgAAgASgCCCEECyABIARBAWo2AgggASgCACAEaiADOgAACwuOEAEDfyOAgICAAEHQAGsiAiSAgICAAAJAQQpBARC2hYCAACIDRQ0AIANBACkA+bnCgAA3AAAgA0EIakEALwCBusKAADsAACACIAM2AhAgAkKKgICAoAE3AhQgAiACQRBqEK+QgIAAIAJBioKAgAA2AjQgAiABNgIwIAJBATYCTCACQgE3AjwgAkGEt8KAADYCOCACIAJBMGo2AkggAkEgaiACQThqEK2QgIAAIAAgAiACQSBqEPGJgIAAAkAgAigCFCIDRQ0AIAIoAhAgA0EBELeFgIAACwJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AACIDQaV/akEFIANB2gBLGw4JAQIDBAUGBwgJAAsgAUEIaigCACIDRQ0JIAEoAgQgA0EBELeFgIAADAkLAkAgASgCBEUNACABQQRqELeHgIAACyABQQhqKAIAIgNFDQggAUEMaigCACIBRQ0IIAMgAUEBELeFgIAADAgLIAFBBGoQkY2AgAAMBwsgAUEEahCRjYCAAAwGCwJAIAEoAgQiA0EESw0AIANBA0YNACABQQxqKAIAIgNFDQAgAUEIaigCACADQQEQt4WAgAALIAFBIGoQkY2AgAAMBQsgAUEIahC2h4CAACABQcAAahCRjYCAAAwECwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADQWNqQQAgA0EdSxsOPQABAhcDBBcFFxcXFxcGFxcXFxcXFxcXFxcXBxcICQoLFxcMDRcXFxcXFxcOFw8QFxcXFxcXFxESExcUFRYXCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMOHQEjAgMjIwQFIyMjIwYjIyMjByMIIwkjIyMKIwsMAAsgAUEIaigCACIDRQ0iIAEoAgQgA0EBELeFgIAADCILIAFBCGoQtoeAgAAMIQsgAUEIaigCACIDRQ0gIAEoAgQgA0EBELeFgIAADCALIAFBCGooAgAiA0UNHyABKAIEIANBARC3hYCAAAwfCyABKAIEIgNBBEsNHiADQQNGDR4gAUEMaigCACIDRQ0eIAFBCGooAgAgA0EBELeFgIAADB4LIAFBCGooAgAiA0UNHSABKAIEIANBARC3hYCAAAwdCwJAIAFBCGooAgAiA0UNACABKAIEIANBARC3hYCAAAsgAUEQaiIDEMaHgIAAIAFBFGooAgAiAEUNHCADKAIAIABBDGxBBBC3hYCAAAwcCyABQQhqELaHgIAADBsLIAFBCGooAgAiA0UNGiABKAIEIANBARC3hYCAAAwaCwJAIAFBCGooAgAiA0UNACABKAIEIANBARC3hYCAAAsgAUEUaigCACIDRQ0ZIAFBEGooAgAgA0EBELeFgIAADBkLIAFBCGooAgAiA0UNGCABKAIEIANBARC3hYCAAAwYCyABQRhqELaHgIAADBcLAkAgAUEMaigCACIDRQ0AIAEoAgggA0EBELeFgIAACyABQRhqELaHgIAADBYLIAFBCGoQtoeAgAAMFQsgAUEMaigCACIDRQ0UIAFBCGooAgAgA0EBELeFgIAADBQLIAEoAgQiA0EESw0TIANBA0YNEyABQQxqKAIAIgNFDRMgAUEIaigCACADQQEQt4WAgAAMEwsgAUEIaigCACIDRQ0SIAEoAgQgA0EBELeFgIAADBILIAFBFGooAgAiA0UNESABQRBqKAIAIANBARC3hYCAAAwRCyABQQxqKAIAIgNFDRAgASgCCCADQQEQt4WAgAAMEAsgAUEUaigCACIDRQ0PIAFBEGooAgAgA0EBELeFgIAADA8LIAFBCGooAgAiA0UNDiABKAIEIANBARC3hYCAAAwOCyABQQhqKAIAIgNFDQ0gASgCBCADQQEQt4WAgAAMDQsgAUEQahC2h4CAAAwMCyABQQhqELaHgIAADAsLIAFBDGooAgAiA0UNCiABKAIIIANBARC3hYCAAAwKCyABQQhqKAIAIgNFDQkgASgCBCADQQEQt4WAgAAMCQsgAUEIaigCACIDRQ0IIAEoAgQgA0EBELeFgIAADAgLIAFBCGooAgAiA0UNByABKAIEIANBARC3hYCAAAwHCyABKAIEIgNBBEsNBiADQQNGDQYgAUEMaigCACIDRQ0GIAFBCGooAgAgA0EBELeFgIAADAYLIAFBDGooAgAiA0UNBSABKAIIIANBARC3hYCA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gAAACxCpkICAAAAL8AUCA38CfiOAgICAAEHgAGsiAiSAgICAACACQQA6ADcgAkHIAGogASACQTdqQQEQ0o6AgAACQAJAAkACQAJAAkACQAJAIAIoAkgNACACLQA3IgNBA3EiBEEDRg0BIAQOAwIEAwILIAJBFmogAkHIAGpBDGopAgAiBTcBACACIAIpAkwiBjcBDiAAQQxqIAU3AQAgACAGNwEEIABBATYCAAwGCwJAIANBBEkNACAAQQRqQaC4woAAQSIQ246AgAAgAEEBNgIADAYLIAJBADYCDCACQcgAaiABIAJBDGpBBBDSjoCAAAJAIAIoAkhFDQAgAkEgakEIaiACQcgAakEQaigCACIBNgIAIAIgAkHIAGpBCGopAwAiBTcDICAAIAIoAkw2AgQgAEEIaiAFNwIAIABBEGogATYCACAAQQE2AgAMBgsgAigCDCIBQf////8DSw0EIABBBGpBoLjCgABBIhDbjoCAACAAQQE2AgAMBQsgA0ECdiEBDAMLIAJBADYCDCACIAM6AAwgAkHIAGogASACQQxqQQFyQQMQ0o6AgAAgAigCSEUNASACQSBqQQhqIAJByABqQRBqKAIAIgE2AgAgAiACQcgAakEIaikDACIFNwMgIAAgAigCTDYCBCAAQQhqIAU3AgAgAEEQaiABNgIAIABBATYCAAwDCyACQQA7AQwgAiADOgAMIAJByABqIAEgAkEMakEBckEBENKOgIAAAkAgAigCSEUNACACQShqIAJByABqQQxqKQIAIgU3AwAgAiACKQJMIgY3AyAgAEEMaiAFNwIAIAAgBjcCBCAAQQE2AgAMAwsCQCACLwEMIgFB/wFLDQAgAEEEakGguMKAAEEiENuOgIAAIABBATYCAAwDCyABQQJ2IQEMAQsCQCACKAIMIgFB//8DTQ0AIAFBAnYhAQwBCyAAQQRqQaC4woAAQSIQ246AgAAgAEEBNgIADAELIABBADYCACAAIAE2AgQLIAJB4ABqJICAgIAAC5YMAwR/AX4BfyOAgICAAEHwAWsiAiSAgICAACACQagBakEYaiIDQgA3AwAgAkGoAWpBEGoiBEIANwMAIAJBqAFqQQhqIgVCADcDACACQgA3A6gBIAJByABqIAEgAkGoAWpBIBDSjoCAAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAkgNACACQQhqQQhqIAUpAwA3AwAgAkEIakEQaiAEKQMANwMAIAJBCGpBGGogAykDADcDACACIAIpA6gBIgY3A2ggAiAGNwMIIAJBqAFqIAEQvYeAgAAgAigCqAENASACKAKsARDWjoCAACEHIAJBqAFqQRhqIgNCADcDACACQagBakEQaiIEQgA3AwAgAkGoAWpBCGoiBUIANwMAIAJCADcDqAEgAkHIAGogASACQagBakEgENKOgIAAIAIoAkgNAiACQShqQQhqIAUpAwA3AwAgAkEoakEQaiAEKQMANwMAIAJBKGpBGGogAykDADcDACACIAIpA6gBIgY3A2ggAiAGNwMoIANCADcDACAEQgA3AwAgBUIANwMAIAJCADcDqAEgAkHYAWogASACQagBakEgENKOgIAAIAIoAtgBDQUgAkHIAGpBCGogAkGoAWpBCGopAwA3AwAgAkHIAGpBEGogAkGoAWpBEGopAwA3AwAgAkHIAGpBGGogAkGoAWpBGGopAwA3AwAgAiACKQOoASIGNwNoIAIgBjcDSCACQagBaiABEL2HgIAAIAIoAqgBRQ0DIAJBiAFqQQxqIAJBqAFqQQxqKQIANwIAIAIgAikCrAE3AowBDAQLIAJB8wBqIAJByABqQQxqKQIANwAAIAIgAikCTDcAa0EQQQQQtoWAgAAiAUUNCCAAIAE2AgggAEEANgIEIAEgAkHrAGoiAykAADcAACAAQRRqQSY2AgAgAEEQakHCuMKAADYCACAAQQxqQQA2AgAgAUEIaiADQQhqKQAANwAADAcLQRBBBBC2hYCAACIBRQ0IIAEgAikCrAE3AgAgACABNgIIIABBADYCBCAAQRRqQSE2AgAgAEEQakHouMKAADYCACAAQQxqQQA2AgAgAUEIaiACQagBakEMaikCADcCAAwGCyACQfMAaiACQcgAakEMaikCADcAACACIAIpAkw3AGtBEEEEELaFgIAAIgFFDQggACABNgIIIABBADYCBCABIAJB6wBqIgMpAAA3AAAgAEEUakElNgIAIABBEGpBibnCgAA2AgAgAEEMakEANgIAIAFBCGogA0EIaikAADcAAAwFCyACQYgBaiABIAIoAqwBELyHgIAAIAIoAogBRQ0CC0EQQQQQtoWAgAAiAQ0CQRBBBBCokICAAAALIAJB8wBqIAJB2AFqQQxqKQIANwAAIAIgAikC3AE3AGtBEEEEELaFgIAAIgFFDQYgACABNgIIIABBADYCBCABIAJB6wBqIgMpAAA3AAAgAEEUakEqNgIAIABBEGpBrrnCgAA2AgAgAEEMakEANgIAIAFBCGogA0EIaikAADcAAAwCCyACQZQBaigCACEBIAIpAowBIQYgAEEoaiACQQhqQRhqKQMANwAAIABBIGogAkEIakEQaikDADcAACAAQRhqIAJBCGpBCGopAwA3AAAgACACKQMINwAQIAAgAikDKDcAMCAAQThqIAJBKGpBCGopAwA3AAAgAEHAAGogAkEoakEQaikDADcAACAAQcgAaiACQShqQRhqKQMANwAAIAAgAikDSDcAUCAAQdgAaiACQcgAakEIaikDADcAACAAQeAAaiACQcgAakEQaikDADcAACAAQegAaiACQcgAakEYaikDADcAACAAIAE2AgwgACAGNwIEIAAgBzYCAAwBCyABIAIpAowBNwIAIAFBCGogAkGUAWopAgA3AgAgAkEfNgK0ASACQaq9woAANgKwASACQQA2AqwBIAIgATYCqAEgAEEIaiACQagBakHYucKAAEEhEPyHgIAAIABBADYCBAsgAkHwAWokgICAgAAPC0EQQQQQqJCAgAAAC0EQQQQQqJCAgAAAC0EQQQQQqJCAgAAAC0EQQQQQqJCAgAAAC/kCAgJ+A38gAEEDdEECciIArSEDAkACQCAAQf8ASw0AIAIoAgghAAwBCyACKAIIIQAgAyEEA0AgBKdBgH9yIQUCQAJAIAIoAgQgAEYNACAAIQYMAQsgAiAAQQEQnYeAgAAgAigCCCEGCyACIAZBAWoiADYCCCACKAIAIAZqIAU6AAAgBEL//wBWIQYgBEIHiCIDIQQgBg0ACwsgA6chBQJAIAIoAgQgAEcNACACIABBARCdh4CAACACKAIIIQALIAIgAEEBaiIGNgIIIAIoAgAgAGogBToAACABQQhqKAIAIQBBACEFQQAhBwJAIAEpAwAiBFANACAEQgGEeadBP3NBCWxByQBqQcAPcUEGdkEBaiEHCwJAIABFDQAgAEEBcqx5p0E/c0EJbEHJAGpBBnZBAWohBQsCQCACKAIEIAZHDQAgAiAGQQEQnYeAgAAgAigCCCEGCyACIAZBAWo2AgggAigCACAGaiAFIAdqOgAAIAEgAhC4h4CAAAvUAgEEfwJAIAFFDQAgACABQTBsaiECA0ACQCAAIgNBBGooAgAiAUUNACADKAIAIAFBARC3hYCAAAsgA0EwaiEAAkAgAygCDCIBRQ0AAkAgA0EUaigCACIERQ0AIARBDGwhBANAAkAgAUEEaigCACIFRQ0AIAEoAgAgBUEBELeFgIAACyABQQxqIQEgBEF0aiIEDQALCwJAIANBEGooAgAiAUUNACADKAIMIAFBDGxBBBC3hYCAAAsCQCADQRxqKAIAIgFFDQAgA0EYaigCACABQQEQt4WAgAALAkAgA0EsaigCACIERQ0AIANBJGooAgAhASAEQQxsIQQDQAJAIAFBBGooAgAiBUUNACABKAIAIAVBARC3hYCAAAsgAUEMaiEBIARBdGoiBA0ACwsgA0EoaigCACIBRQ0AIAMoAiQgAUEMbEEEELeFgIAACyAAIAJHDQALCwv0AgEFfyAAQQxqKAIAIgEgAEEIaigCACICa0HEAG4hAwJAIAEgAkYNACACIANBxABsaiEEA0ACQCACQShqKAIAIgNFDQAgAigCICEBIANBDGwhAwNAAkAgAUEEaigCACIFRQ0AIAEoAgAgBUEBELeFgIAACyABQQxqIQEgA0F0aiIDDQALCwJAIAJBJGooAgAiAUUNACACKAIgIAFBDGxBBBC3hYCAAAsCQCACQTBqKAIAIgFFDQAgAkEsaigCACABQQEQt4WAgAALAkAgAkHAAGooAgAiA0UNACACQThqKAIAIQEgA0EMbCEDA0ACQCABQQRqKAIAIgVFDQAgASgCACAFQQEQt4WAgAALIAFBDGohASADQXRqIgMNAAsLIAJBxABqIQECQCACQTxqKAIAIgNFDQAgAigCOCADQQxsQQQQt4WAgAALIAEhAiABIARHDQALCwJAIAAoAgQiAUUNACAAKAIAIAFBxABsQQQQt4WAgAALC68CAQN/AkAgAEEEaigCACIBRQ0AIAAoAgAgAUEBELeFgIAACwJAIAAoAgwiAUUNAAJAIABBFGooAgAiAkUNACACQQxsIQIDQAJAIAFBBGooAgAiA0UNACABKAIAIANBARC3hYCAAAsgAUEMaiEBIAJBdGoiAg0ACwsCQCAAQRBqKAIAIgFFDQAgACgCDCABQQxsQQQQt4WAgAALAkAgAEEcaigCACIBRQ0AIABBGGooAgAgAUEBELeFgIAACwJAIABBLGooAgAiAkUNACAAQSRqKAIAIQEgAkEMbCECA0ACQCABQQRqKAIAIgNFDQAgASgCACADQQEQt4WAgAALIAFBDGohASACQXRqIgINAAsLIABBKGooAgAiAUUNACAAKAIkIAFBDGxBBBC3hYCAAAsL5xEEDX8BfgZ/An4jgICAgABBsAJrIgIkgICAgAAgASgCBCEDIAEoAgAhBAJAAkACQAJAAkACQAJAAkACQCABKAIIIgUgASgCDCIGRg0AIAEoAhAhByACQdgBakEDaiEIIAJBjQJqQQNqIQkgAkGAAWpBAXIhAQNAIAJB0ABqQShqIAVBKGoiCikCADcDACACQdAAakEgaiAFQSBqIgspAgA3AwAgAkHQAGpBGGogBUEYaiIMKQIANwMAIAJB0ABqQRBqIAVBEGoiDSkCADcDACACQdAAakEIaiAFQQhqIg4pAgA3AwAgAiAFKQIAIg83A1AgD6dFDQIgAkHYAWpBKGogCikCADcDACACQdgBakEgaiALKQIANwMAIAJB2AFqQRhqIhAgDCkCADcDACACQdgBakEQaiIMIA0pAgA3AwAgAkHYAWpBCGoiDSAOKQIANwMAIAIgBSkCADcD2AEgAkGAAWogAkHYAWoQ34eAgAAgAigCpAEhCyACLQCAASEKIAJB2AFqQR9qIAFBH2ooAAA2AAAgECABQRhqKQAANwMAIAwgAUEQaikAADcDACANIAFBCGopAAA3AwAgAiABKQAANwPYASAKQeUARw0FIAkgCCkAADcAACAJQRhqIAhBGGopAAA3AAAgCUEQaiAIQRBqKQAANwAAIAlBCGogCEEIaikAADcAACALDQQgBUEwaiIFIAZHDQALIAYhBQsgAkEANgJQDAELIAVBMGohBQsgAkHQAGoQ4IeAgAAMBAsgAkEwakEYaiIBIAlBGGopAAA3AwAgAkEwakEQaiIIIAlBEGopAAA3AwAgAkEwakEIaiIKIAlBCGopAAA3AwAgAkEQakEIaiIMIAJBgAFqQTBqKQMANwMAIAJBEGpBEGoiDSACQbgBaikDADcDACACQRBqQRhqIg4gAkHAAWopAwA3AwAgAiACKQOoATcDECACIAkpAAA3AzACQEGQAkEEELaFgIAAIhFFDQAgESACKQMwNwIAIBEgCzYCICARIAIpAxA3AiQgEUEYaiABKQMANwIAIBFBEGogCCkDADcCACARQQhqIAopAwA3AgAgEUEsaiAMKQMANwIAIBFBNGogDSkDADcCACARQTxqIA4pAwA3AgAgAkKEgICAEDcCBCACIBE2AgACQCAFQTBqIgUgBkYNACACQYABakEoaiESIAJB2AFqQQNqIQggAkGNAmpBA2ohCSACQYABakEBciEBQQEhEwNAIAJB0ABqQShqIAVBKGoiCikCADcDACACQdAAakEgaiAFQSBqIgspAgA3AwAgAkHQAGpBGGogBUEYaiIMKQIANwMAIAJB0ABqQRBqIAVBEGoiDSkCADcDACACQdAAakEIaiAFQQhqIg4pAgA3AwAgAiAFKQIAIg83A1ACQAJAAkACQCAPp0UNACACQdgBakEoaiAKKQIANwMAIAJB2AFqQSBqIAspAgA3AwAgAkHYAWpBGGoiECAMKQIANwMAIAJB2AFqQRBqIgwgDSkCADcDACACQdgBakEIaiINIA4pAgA3AwAgAiAFKQIANwPYASACQYABaiACQdgBahDfh4CAACACKAKkASELIAItAIABIQogAkHYAWpBH2ogAUEfaigAADYAACAQIAFBGGopAAA3AwAgDCABQRBqKQAANwMAIA0gAUEIaikAADcDACACIAEpAAA3A9gBIApB5QBHDQIgCSAIKQAANwAAIAlBGGoiCiAIQRhqKQAANwAAIAlBEGoiDCAIQRBqKQAANwAAIAlBCGoiDSAIQQhqKQAANwAAIAsNASAFQTBqIgUgBkcNBAwFCyAFQTBqIQUMBwsgAkEwakEYaiIOIAopAAA3AwAgAkEwakEQaiIQIAwpAAA3AwAgAkEwakEIaiIMIA0pAAA3AwAgAkEQakEIaiINIBJBCGopAgA3AwAgAkEQakEQaiIUIBJBEGopAgA3AwAgAkEQakEYaiIVIBJBGGopAgA3AwAgAiAJKQAANwMwIAIgEikCADcDECAFQTBqIQUgEyACKAIERw0BIAIgE0EBEJyHgIAAIAIoAgAhEQwBCyAHEN6HgIAAIAcgCjoAACAHIAs2AiQgByABKQAANwABIAdBCWogAUEIaikAADcAACAHQRFqIAFBEGopAAA3AAAgB0EZaiABQRhqKQAANwAAIAdBIGogAUEfaigAADYAACAHIBIpAwA3AyggB0EwaiASQQhqKQMANwMAIAdBOGogEkEQaikDADcDACAHQcAAaiASQRhqKQMANwMAIAdB0ABqIAJBgAFqQdAAaikDADcDACAHIAIpA8gBNwNIIAVBMGohBQwGCyARIBNBxABsaiIKIAIpAzA3AgAgDCkDACEPIBApAwAhFiAOKQMAIRcgCiALNgIgIApBGGogFzcCACAKQRBqIBY3AgAgCkEIaiAPNwIAIAogAikDEDcCJCAKQSxqIA0pAwA3AgAgCkE0aiAUKQMANwIAIApBPGogFSkDADcCACACIBNBAWoiEzYCCCAFIAZHDQALCyACQQA2AlAgBiEFDAILQZACQQQQqJCAgAAACyAHEN6HgIAAIAcgCjoAACAHIAs2AiQgByABKQAANwABIAdBCWogAUEIaikAADcAACAHQRFqIAFBEGopAAA3AAAgB0EZaiABQRhqKQAANwAAIAdBIGogAUEfaigAADYAACAHIAIpA6gBNwMoIAdBMGogAkGAAWpBMGopAwA3AwAgB0E4aiACQYABakE4aikDADcDACAHQcAAaiACQYABakHAAGopAwA3AwAgB0HQAGogAkGAAWpB0ABqKQMANwMAIAcgAikDyAE3A0ggBUEwaiEFDAILIAJB0ABqEOCHgIAACyAFIAYgBWtBMG4QwIeAgAACQCADRQ0AIAQgA0EwbEEEELeFgIAACyAAIAIpAwA3AgAgAEEIaiACQQhqKAIANgIADAELIABBADYCCCAAQgQ3AgAgBSAGIAVrQTBuEMCHgIAAIANFDQAgBCADQTBsQQQQt4WAgAALIAJBsAJqJICAgIAAC/4EAQN/I4CAgIAAQbABayICJICAgIAAIAJBEGogAUEQaigCADYCACACQQhqIAFBCGopAgA3AwAgAiABKQIANwMAIAJBwABqIAIQ3YeAgAACQAJAAkAgAigCRA0AIABBADYCCCAAQgQ3AgAgAigCDCIDIAIoAggiAWtBDG4hBAJAIAMgAUYNACAEQQxsIQMDQAJAIAFBBGooAgAiBEUNACABKAIAIARBARC3hYCAAAsgAUEMaiEBIANBdGoiAw0ACwsgAigCBCIBRQ0BIAIoAgAgAUEMbEEEELeFgIAADAELQcADQQQQtoWAgAAiBEUNASAEIAJBwABqQfAAELyRgIAAIQEgAkKEgICAEDcCHCACIAE2AhggAkEoakEQaiACQRBqKAIA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ACABEJyMgIAACw8AIAAoAgAgARCaioCAAAsCAAs1AQF/AkAgACgCAA0AIABBCGooAgAiAUUNACAAKAIEIAFBARC3hYCAAAsgAEEQahCRjYCAAAu0AgECfyOAgICAAEEwayICJICAgIAAAkACQEErQQEQtoWAgAAiA0UNACADQSdqQQAoAKq6woAANgAAIANBIGpBACkAo7rCgAA3AAAgA0EYakEAKQCbusKAADcAACADQRBqQQApAJO6woAANwAAIANBCGpBACkAi7rCgAA3AAAgA0EAKQCDusKAADcAACACIAEQ0oeAgAAgAigCAEEERg0BIAJBGGpBEGogAkEQaigCADYCACACQRhqQQhqIAJBCGopAwA3AwAgAiACKQMANwMYQa66woAAQRUgAkEYakHEusKAAEGIu8KAABDakICAAAALQStBARCokICAAAALIAAgAikCBDcCDCAAQRRqIAJBDGooAgA2AgAgAEKrgICAsAU3AgQgACADNgIAIAJBMGokgICAgAALRAEBfyOAgICAAEEQayICJICAgIAAIAJBCGogAUEIaigCADYCACACIAEpAgA3AwAgACACEJ2LgIAAIAJBEGokgICAgAALDAAgACABENKHgIAAC6oHAQN/I4CAgIAAQbABayICJICAgIAAIAEoAhAhAwJAAkACQAJAAkACQAJAIAEpAwBQDQAgAkEwaiABKQMIIAMQmIyAgAAgAi0AMEHCAEYNASACQeAAakEYaiIEIAJBMGpBGGopAwA3AwAgAkHgAGpBEGogAkEwakEQaikDADcDACACQeAAakEIaiACQTBqQQhqKQMANwMAIAIgAikDMDcDYCACQYuCgIAANgKUASACIAJB4ABqNgKQASACQQE2AqwBIAJCATcCnAEgAkHwu8KAADYCmAEgAiACQZABajYCqAEgAkGAAWogAkGYAWoQrZCAgAAgAkHcAGogAkGAAWpBCGooAgA2AAAgAiACKQOAATcAVAJAAkACQAJAAkACQAJAAkACQCACLQBgQX9qDigADQECAw0NDQQNDQ0NDQ0NDQ0NDQ0NDQ0FDQ0NDQ0NDQ0NDQ0GBw0IDQsgAkHgAGpBBHIhAwwLCyACQeAAakEEciEDDAoLIAJB4ABqQQRyIQMMCQsgAkHgAGpBBHIhAwwICyACQeAAakEEciEDDAcLIAJB4ABqQQRyIQMMBgsgAkHgAGpBBHIhAwwFCyACQeAAakEEciEDDAQLIAJB4ABqQQRyIQMMAwtBKkEBELaFgIAAIgRFDQEgACADNgIQIABCqoCAgKAFNwMIIAAgBDYABCAAQeQAOgAAIARBKGpBAC8AwLvCgAA7AAAgBEEgakEAKQC4u8KAADcAACAEQRhqQQApALC7woAANwAAIARBEGpBACkAqLvCgAA3AAAgBEEIakEAKQCgu8KAADcAACAEQQApAJi7woAANwAADAQLIAJBCGoiBCACQTBqQQxqKAIANgIAIAIgAikCNDcDACACQTBqQQhqIAFBIGooAgA2AgAgAiABKQIYNwMwIAJB4ABqQQxqIAJBMGoQnYqAgAAgAkHgAGpBCGoiASAEKAIANgIAIAAgAikDADcCBCAAQRRqIAJB8ABqKQMANwIAIABB5QA6AAAgAEEMaiABKQMANwIADAQLQSpBARCokICAAAALIANBBGooAgAiA0UNACACKAJkIANBARC3hYCAAAsgBBCRjYCAACACIAJB2ABqKQAANwAnIAIgAikAUTcDICACIAIpAyA3AxAgAiACKQAnNwAXIABBCGogAikAFzcAACAAIAIpAxA3AAEgAEHkADoAAAsgAUEcaigCACIARQ0AIAEoAhggAEEBELeFgIAACyACQbABaiSAgICAAAtrAQF/I4CAgIAAQRBrIgIkgICAgAAgAiAANgIIIAIgAEEMajYCDCABQfi7woAAQQ5BhrzCgABBCSACQQhqQZC8woAAQaC8woAAQQQgAkEMakGkvMKAABD4kICAACEAIAJBEGokgICAgAAgAAu2DQMEfwF+CX8jgICAgABBoAJrIgIkgICAgAACQAJAIAEoAggiAyABKAIMRg0AIAEoAhAhBCABIANBDGo2AgggAygCACIFRQ0AIAIgAykCBCIGQiCIPgIkIAIgBTYCICACQbABaiACQSBqEL6HgIAAAkACQCACKAK0ASIBRQ0AIAJBAmoiByACQbsBai0AADoAACACQawBakECaiIIIAJBvwFqLQAAOgAAIAJBqAFqQQJqIgkgAkHDAWotAAA6AAAgAiACLwC5ATsBACACIAIvAL0BOwGsASACIAIvAMEBOwGoASACLQC4ASEDIAIoArABIQogAi0AvAEhCyACLQDAASEMIAItAMQBIQ0gAkGkAWpBAmoiDiACQccBai0AADoAACACQZABakECaiACQcsBai0AADoAACACIAIvAMUBOwGkASACIAIvAMkBOwGQASACLQDIASEPIAJBPGogAkHMAWpB1AAQvJGAgAAaIAJBoAFqQQJqIActAAA6AAAgAkGcAWpBAmogCC0AADoAACACQZgBakECaiAJLQAAOgAAIAJBlAFqQQJqIA4tAAA6AAAgAiACLwEAOwGgASACIAIvAawBOwGcASACIAIvAagBOwGYASACIAIvAaQBOwGUAQwBCyACQQJqIgMgAkG7AWotAAA6AAAgAkGsAWpBAmoiCiACQb8Bai0AADoAACACQagBakECaiIHIAJBwwFqLQAAOgAAIAJBpAFqQQJqIgggAkHHAWotAAA6AAAgAiACLwC5ATsBACACIAIvAL0BOwGsASACIAIvAMEBOwGoASACIAIvAMUBOwGkASACLQC4ASELIAItALwBIQwgAi0AwAEhDSACLQDEASEPIAJBnAFqQQJqIAMtAAA6AAAgAkGYAWpBAmogCi0AADoAACACQZQBakECaiAHLQAAOgAAIAJBkAFqQQJqIAgtAAA6AAAgAiACLwEAOwGcASACIAIvAawBOwGYASACIAIvAagBOwGUASACIAIvAaQBOwGQAUHbACEDCwJAIAanIgdFDQAgBSAHQQEQt4WAgAALAkACQCABRQ0AIAJBrAFqQQJqIAJBoAFqQQJqLQAAOgAAIAJBqAFqQQJqIAJBnAFqQQJqLQAAOgAAIAJBpAFqQQJqIAJBmAFqQQJqLQAAOgAAIAJBOGpBAmogAkGUAWpBAmotAAA6AAAgAkE0akECaiACQZABakECai0AADoAACACIAIvAaABOwGsASACIAIvAZwBOwGoASACIAIvAZgBOwGkASACIAIvAZQBOwE4IAIgAi8BkAE7ATQgAkGwAWogAkE8akHEABC8kYCAABogAkEoaiACQYgBaikAADcDACACIAIpAIABNwMgDAELIAQQ3oeAgAAgBCADOgAAIAQgCzoABCAEIAw6AAggBCANOgAMIAQgAi8BoAE7AAEgBEEDaiACQaABakECai0AADoAACAEIAIvAZwBOwAFIARBB2ogAkGcAWpBAmotAAA6AAAgBCACLwGYATsACSAEQQtqIAJBmAFqQQJqLQAAOgAAIAQgAi8BlAE7AA0gBEEPaiAC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BUHwAGohAQJAIAVBCGooAgAiAEUNACAFKAIEIABBFGxBBBC3hYCAAAsgASEFIAEgBEcNAAsLIAIoAlwiAUUNACADIAFB8ABsQQQQt4WAgAALIAJBgAFqJICAgIAAC8gBAQR/I4CAgIAAQTBrIgEkgICAgAAgAEEUaigCACECIAAoAgAhAwJAAkACQAJAIAAoAgQiBA4CAAECCyACDQFBzL3CgABBABCBiICAACEADAILIAINACADKAIAIAMoAgQQgYiAgAAhAAwBCyABQRhqQRBqIABBEGooAgA2AgAgASAENgIcIAEgAzYCGCABIAI2AiwgASAAKQIINwMgIAFBCGogAUEYahCtkICAACABQQhqEIOIgIAAIQALIAFBMGokgICAgAAgAAvlDgQCfwF+AX8BfiOAgICAAEHwAGsiAiSAgICAACACQQA6AC8gAkHYAGogASACQS9qQQEQ0o6AgAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKAJYDQAgAi0ALw4JAwEBAQQFBgEHAQsgAkEiaiACQdgAakEMaikCADcBACACIAIpAlw3ARpBEEEEELaFgIAAIgFFDRIgASACQRpqIgMpAQA3AQAgAUEIaiADQQhqKQEANwEAIAJBwABqQRBqQT42AgAgAkHAAGpBDGpB7LzCgAA2AgAgAkHAAGpBCGpBADYCACACIAE2AkQMAQsgAkHAAGpBBHJBtLzCgABBOBDbjoCAACACKAJEIQELIAJBCGpBCGogAkHAAGpBEGooAgAiAzYCACACIAJBwABqQQhqKQMAIgQ3AwggACABNgIEIABBCGogBDcCACAAQRBqIAM2AgAgAEEFOgAADBILIAJB2ABqIAEQvYeAgAAgAigCWEUNDSACQcAAakEMaiACQdgAakEMaikCADcCACACIAIpAlw3AkQMDgsgAkEANgJAIAJB2ABqIAEgAkHAAGpBBBDSjoCAACACKAJYDQogAigCQCEDIAJB2ABqIAEQvYeAgAACQAJAIAIoAlhFDQAgAkHAAGpBDGogAkHYAGpBDGopAgA3AgAgAiACKQJcNwJEDAELIAJBwABqIAEgAigCXBC6h4CAACACKAJARQ0KCyACQRhqQQhqIAJB0ABqKAIANgIAIAIgAkHAAGpBCGopAwA3AxggAigC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Sw0AIAFBAkcNAQsgAEEQaiIBEMeHgIAAIABBFGooAgAiAkUNACABKAIAIAJBDGxBBBC3hYCAAAsCQCAAQSRqKAIAIgFFDQAgACgCICABQQEQt4WAgAALIABBLEEEELeFgIAACxQAIABBzL/CgAA2AgQgACABNgIACxQAIABBiMDCgAA2AgQgACABNgIACxgAIABBIGpBACABQuuRk7X22LOi9ABRGwsXACAAQSBqQQAgAULwjIOXiNHzjRNRGwtVAQJ/AkACQCAAKAIEIgJBA0sNACACQQJHDQELIABBEGoiAhDHh4CAACAAQRRqKAIAIgNFDQAgAigCACADQQxsQQQQt4WAgAALIABBLEEEELeFgIAAC1UBAn8CQAJAIAAoAgQiAkEDSw0AIAJBAkcNAQsgAEEQaiICEMeHgIAAIABBFGooAgAiA0UNACACKAIAIANBDGxBBBC3hYCAAAsgAEEoQQQQt4WAgAALDAAgACABENiNgIAACw4AIAAgASACENeNgIAAC0cBAX8jgICAgABBEGsiAiSAgICAACACQQhqIAAQ1o2AgAAgAigCCCABIAIoAgwoAhARiICAgAAAIQAgAkEQaiSAgICAACAAC8sIAQ5/I4CAgIAAQZABayICJICAgIAAIAEoAhAhAyABKAIMIQQgAUEANgIQIAFBOGohBSABQTRqIQYgAUEUaiEHIAJBLGohCAJAAkACQAJAAkAgAw0AIAEoAggiAyAERg0DIAEgA0HEAGo2AgggAkHwAGpBCGogA0EIaikCADcDACACQfAAakEQaiADQRBqKQIANwMAIAJB8ABqQRhqIANBGGopAgA3AwAgAiADKQIANwNwIANBJGohCSADQSBqIQoMAQtBACEDDAELQQEhAwsDQAJAAkAgAw4CAAEBCyACQfAAakEYaiAHQRhqKQIANwMAIAJB8ABqQRBqIAdBEGopAgA3AwAgAkHwAGpBCGogB0EIaikCADcDACACIAcpAgA3A3AgBSEJIAYhCkEBIQMMAQsgCigCACILRQ0BIAggCSkCADcCACACQQhqQRhqIAJB8ABqQRhqIgwpAwA3AwAgAkEIakEQaiACQfAAakEQaiINKQMANwMAIAJBCGpBCGogAkHwAGpBCGoiDikDADcDACAIQQhqIAlBCGopAgA3AgAgCEEQaiAJQRBqKQIANwIAIAhBGGogCUEYaikCADcCACACIAIpA3A3AwggAiALNgIoQQAhDwJAIAEoAggiAyAERg0AIAEgA0HEAGo2AgggDiADQQhqKQIANwMAIA0gA0EQaikCADcDACAMIANBGGopAgA3AwAgAkHQAGpBCGogA0EsaikCADcDACACQdAAakEQaiADQTRqKQIANwMAIAJB0ABqQRhqIANBPGopAgA3AwAgAiADKQIANwNwIAIgAykCJDcDUCADKAIgIQ8LIAcgAikDcDcCACAFIAIpA1A3AgAgB0EYaiAMKQMANwIAIAdBEGogDSkDADcCACAHQQhqIA4pAwA3AgAgBUEIaiACQdAAakEIaikDADcCACAFQRBqIAJB0ABqQRBqKQMANwIAIAVBGGogAkHQAGpBGGopAwA3AgAgASAPNgI0IAFBATYCEAJAIA8NACAAIAJBCGpBxAAQvJGAgAAaDAMLAkACQCACQQhqIAdBIBC6kYCAAA0AAkAgAigCMCIDRQ0AIANBDGwhDyALIQMDQAJAIANBBGooAgAiDEUNACADKAIAIAxBARC3hYCAAAsgA0EMaiEDIA9BdGoiDw0ACwsCQCACKAIsIgNFDQAgCyADQQxsQQQQt4WAgAALAkAgAigCOCIDRQ0AIAIoAjQgA0EBELeFgIAACyACKAJAIQsCQCACKAJIIgNFDQAgA0EMbCEPIAshAwNAAkAgA0EEaigCACIMRQ0AIAMoAgAgDEEBELeFgIAACyADQQxqIQMgD0F0aiIPDQALCwJAIAIoAkQiA0UNACALIANBDGxBBBC3hYCAAAsgAUEANgIQDAELIAAgAkEIakHEABC8kYCAABoMAwtBACEDDAALCyAAQQA2AiALIAJBkAFqJICAgIAAC1wBAX8CQEEQQQQQtoWAgAAiBA0AQRBBBBCokICAAAALIABBADYCBCAAIAQ2AgAgBCABKQIANwIAIABBDGogAzYCACAAQQhqIAI2AgAgBEEIaiABQQhqKQIANwIAC6cHAwR/AX4BfyOAgICAAEHAAWsiAiSAgICAACACQfgAakEYaiIDQgA3AwAgAkH4AGpBEGoiBEIANwMAIAJB+ABqQQhqIgVCADcDACACQgA3A3ggAkGoAWogASACQfgAakEgENKOgIAAAkACQAJAAkACQAJAAkAgAigCqAENACACQRhqQQhqIAUpAwA3AwAgAkEYakEQaiAEKQMANwMAIAJBGGpBGGogAykDADcDACACIAIpA3giBjcDOCACIAY3AxggAkH4AGogARC9h4CAACACKAJ4RQ0BIAJB2ABqQQxqIAJB+ABqQQxqKQIANwIAIAIgAikCfDcCXCACQQE2AlgMAgsgAkHDAGogAkGoAWpBDGopAgA3AAAgAiACKQKsATcAO0EQQQQQtoWAgAAiAUUNAiAAIAE2AgQgAEEANgIAIAEgAkE7aiIDKQAANwAAIABBEGpBJzYCACAAQQxqQbTAwoAANgIAIABBCGpBADYCACABQQhqIANBCGopAAA3AAAMBQsgAkHYAGogASACKAJ8ELqHgIAAIAIoAlhFDQMLQRBBBBC2hYCAACIBRQ0BIAEgAikCXDcCACAAIAE2AgQgAEEANgIAIABBEGpBLzYCACAAQQxqQdvAwoAANgIAIABBCGpBADYCACABQQhqIAJB2ABqQQxqKQIANwIADAMLQRBBBBCokICAAAALQRBBBBCokICAAAALIAJB2ABqQQxqIgUoAgAhByACQeAAaigCACEDIAIoAlwhBCACQfgAaiABEL2HgIAAAkACQAJAIAIoAnhFDQAgBSACQfgAakEMaikCADcCACACIAIpAnw3AlwgAkEBNgJYDAELIAJB2ABqIAEgAigCfBC7h4CAACACKAJYRQ0BCwJAQRBBBBC2hYCAACIBRQ0AIAEgAikCXDcCACAAIAE2AgQgAEEANgIAIABBEGpBMTYCACAAQQxqQYrBwoAANgIAIABBCGpBADYCACABQQhqIAJB2ABqQQxqKQIANwIAIANFDQIgBCADQQEQt4WAgAAMAgtBEEEEEKiQgIAAAAsgAkEIakEIaiACQeQAaigCACIBNgIAIAIgAikCXCIGNwMIIABBMGogAkEwaikDADcAACAAQShqIAJBKGopAwA3AAAgAEEgaiACQRhqQQhqKQMANwAAIAAgAikDGDcAGCAAIAc2AgggACADNgIEIAAgBDYCACAAIAY3AgwgAEEUaiABNgIACyACQcABaiSAgICAAAsPACAAKAIAIAEQ3I6AgAALHAAgACgCACIAKAIAIABBCGooAgAgARCCkYCAAAsPACAAKAIAIAEQ4I2AgAALgAEBAX8jgICAgABBwABrIgIkgICAgAAgAhCwj4CAACACQSBqQRhqIAJBGGooAgA2AgAgAkEgakEQaiACQRBqKQMANwMAIAJBIGpBCGogAkEIaikDADcDACACIAIpAwA3AyAgACABIAJBIGoQgoiAgAAhASACQcAAaiSAgICAACABC3UBAX8CQEEoQQQQtoWAgAAiAw0AQShBBBCokICAAAALIANB0MHCgAA2AgAgAyABNgIkIAMgADYCICADIAIpAgA3AgQgA0EMaiACQQhqKQIANwIAIANBFGogAkEQaikCADcCACADQRxqIAJBGGooAgA2AgAgAwueAQEBfyOAgICAAEHQAGsiASSAgICAACABELCPgIAAIAFBIGpBCGogAEEIaigCADYCACABIAApAgA3AyAgAUEwakEYaiABQRhqKAIANgIAIAFBMGpBEGogAUEQaikDADcDACABQTBqQQhqIAFBCGopAwA3AwAgASABKQMANwMwIAFBIGogAUEwahCEiICAACEAIAFB0ABqJICAgIAAIAALgQEBAX8CQEEsQQQQtoWAgAAiAg0AQSxBBBCokICAAAALIAJBvMHCgAA2AgAgAiABKQIANwIEIAIgACkCADcCICACQQxqIAFBCGopAgA3AgAgAkEUaiABQRBqKQIANwIAIAJBHGogAUEYaigCADYCACACQShqIABBCGooAgA2AgAgAgvtFwUIfwR+Cn8Bfgd/I4CAgIAAQfABayIDJICAgIAAIABBBGooAgAhBAJAIAAoAgAiBUUNACAFQX9qIQYCQCAFQQNxIgdFDQADQCAFQX9qIQUgBCAELwGSA0ECdGpB9AVqKAIAIQQgB0F/aiIHDQALCyAGQQNJDQADQCAEIAQvAZIDQQJ0akH0BWooAgAiBCAELwGSA0ECdGpB9AVqKAIAIgQgBC8BkgNBAnRqQfQFaigCACIEIAQvAZIDQQJ0akH0BWooAgAhBCAFQXxqIgUNAAsLIANBCGogAUHYABC8kYCAABogA0HgAGogA0EIahD7h4CAAAJAIAMoAoABRQ0AIANB4ABqQSBqIQgDQAJAAkACQAJAAkACQAJAAkACQCAELwGSAyIFQQtJDQAgBCgCACIERQ0CQQEhAQwBCyADQagBakEgaiIBIAhBIGooAgA2AgAgA0GoAWpBGGoiBiAIQRhqKQIANwMAIANBqAFqQRBqIgkgCEEQaikCADcDACADQagBakEIaiIKIAhBCGopAgA3AwAg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t4WAgAALIAJBwABqJICAgIAADwtBIEEBEKiQgIAAAAvaAQACQAJAIAJFDQACQAJAAkACQAJAAkAgAUEASA0AIAMoAggNASABDQJBASECDAQLIABBCGpBADYCAAwGCwJAIAMoAgQiAg0AAkAgAQ0AQQEhAgwECyABQQEQtoWAgAAhAgwCCyADKAIAIAJBASABELiFgIAAIQIMAQsgAUEBELaFgIAAIQILIAJFDQELIAAgAjYCBCAAQQhqIAE2AgAgAEEANgIADwsgACABNgIEIABBCGpBATYCACAAQQE2AgAPCyAAIAE2AgQgAEEIakEANgIACyAAQQE2AgAL6AEBAn8jgICAgABBIGsiAySAgICAAAJAAkAgASACaiICIAFJDQAgAEEEaigCACIBQQF0IgQgAiAEIAJLGyICQQggAkEISxsiAkF/c0EfdiEEAkACQCABRQ0AIANBATYCGCADIAE2AhQgAyAAKAIANgIQDAELIANBADYCGAsgAyACIAQgA0EQahCOiICAACADKAIEIQECQCADKAIADQAgACABNgIAIABBBGogAjYCAAwCCyADQQhqKAIAIgBBgYCAgHhGDQEgAEUNACABIAAQqJCAgAAACxCpkICAAAALIANBIGokgICAgAALDwAgACgCACABEOCNgIAACw8AIAAoAgAgARDcjoCAAAvdAQICfwJ+I4CAgIAAQTBrIgIkgICAgAAgAkEAOwEGIAEtAAQhAyABQQA6AAQCQAJAIANBAXENACACQRhqIAEoAgAgAkEGakECENKOgIAADAELIAIgAUEFai0AADoABiACQRhqIAEoAgAgAkEGakEBckEBENKOgIAACwJAAkAgAigCGA0AIAAgAi8BBjsBAiAAQQA7AQAMAQsgAkEQaiACQRhqQQxqKQIAIgQ3AwAgAiACKQIcIgU3AwggAEEMaiAENwIAIAAgBTcCBCAAQQE7AQALIAJBMGokgICAgAAL3QECAn8CfiOAgICAAEEwayICJICAgIAAIAJBADYCBCABLQAEIQMgAUEAOgAEAkACQCADQQFxDQAgAkEYaiABKAIAIAJBBGpBBBDSjoCAAAwBCyACIAFBBWotAAA6AAQgAkEYaiABKAIAIAJBBGpBAXJBAxDSjoCAAAsCQAJAIAIoAhgNACAAIAIoAgQ2AgQgAEEANgIADAELIAJBEGogAkEYakEMaikCACIENwMAIAIgAikCHCIFNwMIIABBDGogBDcCACAAIAU3AgQgAEEBNgIACyACQTBqJICAgIAAC5YBAgF/An4jgICAgABBMGsiAiSAgICAACACQQA2AgQgAkEYaiABIAJBBGpBBBDSjoCAAAJAAkAgAigCGA0AIAAgAigCBDYCBCAAQQA2AgAMAQsgAkEQaiACQRhqQQxqKQIAIgM3AwAgAiACKQIcIgQ3AwggAEEMaiADNwIAIAAgBDcCBCAAQQE2AgALIAJBMGokgICAgAALlgECAX8CfiOAgICAAEEwayICJICAgIAAIAJCADcDACACQRhqIAEgAkEIENKOgIAAAkACQCACKAIYDQAgACACKQMANwMIIABBADYCAAwBCyACQQhqQQhqIAJBGGpBDGopAgAiAzcDACACIAIpAhwiBDcDCCAAQQxqIAM3AgAgACAENwIEIABBATYCAAsgAkEwaiSAgICAAAvjCQIGfwJ+I4CAgIAAQaABayICJICAgIAAIAJBADoAHiACQcgAaiABIAJBHmpBARDSjoCAAAJAAkACQAJAAkAgAigCSA0AIAItAB4hAyACQQA6AJABIAJByABqIAEgAkGQAWpBARDSjoCAAAJAAkACQAJAIAIoAkgNACACLQCQASEEIAJBADoAjwEgAkHIAGogASACQY8BakEBENKOgIAAIAIoAkgNAwJAAkACQCACLQCPASIFQQNxIgZBA0YNACAGDgMEAgEECwJAAkACQCAFQQJ2IgcOBQIAAAABAAsgBUETSw0KIAdBBGohBkIAIQhBACEFA0AgAkEAOgCPASACQcgAaiABIAJBjwFqQQEQ0o6AgAAgAigCSA0KIAIxAI8BIAVBA3RBOHGthiAIhCEIIAVBAWoiBUH/AXEgBkkNAAsgCEJ/QSggB0EDdGtBOHGtiFYNBiACQTBqQQRyQdHIwoAAQSIQ246AgAAMCwsgAkHIAGogARCViICAACACQcgAakEIaikDACEIAkAgAigCSEUNACACKAJMIQEgAkEwakEQaiACQcgAakEQaigCADYCACACQTBqQQhqIAg3AwAgAiABNgI0DAsLIAhC//////////8AVg0FIAJBMGpBBHJB0cjCgABBIhDbjoCAAAwKCyACQcgAaiABEJSIgIAAAkAgAigCSEUNACACQTBqQQhqIAJByABqQQhqKQMANwMAIAJBMGpBEGogAkHIAGpBEGooAgA2AgAgAiACKAJMNgI0DAoLAkAgAigCTCIBQf////8DSw0AIAJBMGpBBHJB0cjCgABBIhDbjoCAAAwKCyABrSEIDAQLIAIgBToAfSACQQE6AHwgAiABNgJ4IAJByABqIAJB+ABqEJOIgIAAAkAgAigCSEUNACACQTBqQQhqIAJByABqQQhqKQMANwMAIAJBMGpBEGogAkHIAGpBEGooAgA2AgAgAiACKAJMNgI0DAkLAkAgAigCTCIBQf//A0sNACACQTBqQQRyQdHIwoAAQSIQ246AgAAMCQsgAUECdq0hCAwDCyACIAU6AGUgAkEBOgBkIAIgATYCYCACQcgAaiACQeAAahCSiICAAAJAIAIvAUhFDQAgAkGAAWogAkHIAGpBDGopAgAiCDcDACACQTBqQQxqIAg3AgAgAiACKQJMNwI0DAgLAkAgAi8BSiIBQf8BSw0AIAJBMGpBBHJB0cjCgABBIhDbjoCAAAwICyABQQJ2rSEIDAILIAJBKGogAkHIAGpBDGopAgAiCDcBACACIAIpAkwiCTcBICAAQQxqIAg3AQAgACAJNwEEIABBATYCAAwHCyAFQQJ2rSEICyAAIAM6AAggAEEANgIAIABBEGogCDcDACAAQQlqIAQ6AAAMBQsgAkEwakEMaiACQcgAakEMaikCADcCACACIAIpAkw3AjQMAwsgAkEWaiACQcgAakEMaikCACIINwEAIAIgAikCTCIJNwEOIABBDGogCDcBACAAIAk3AQQgAEEBNgIADAMLIAJBMGpBDGogAkHIAGpBDGopAgA3AgAgAiACKQJMNwI0DAELIAJBMGpBBHJBqsjCgABBJxDbjoCAAAsgACACKQI0NwIEIABBATYCACAAQQxqIAJBMGpBDGopAgA3AgALIAJBoAFqJICAgIAAC1EBAn8CQCAAKAIAIgEoAgBFDQAgARCXiICAAAsCQCABKAIEIgJFDQAgAUEIaigCACIBRQ0AIAIgAUEBELeFgIAACyAAKAIAQRBBBBC3hYCAAAvIAQEEfyOAgICAAEEwayIBJICAgIAAIABBFGooAgAhAiAAKAIAIQMCQAJAAkACQCAAKAIEIgQOAgABAgsgAg0BQfTIwoAAQQAQsoiAgAAhAAwCCyACDQAgAygCACADKAIEELKIgIAAIQAMAQsgAUEYakEQaiAAQRBqKAIANgIAIAEgBDYCHCABIAM2AhggASACNgIsIAEgACkCCDcDICABQQhqIAFBGGoQrZCAgAAgAUEIahC0iICAACEACyABQTBqJICAgIAAIAALsQEBAX8jgICAgABBMGsiAiSAgICAAAJAAkACQAJAAkAgAQ4DAQIDAAsgAiABNgIMIAJBJGpBATYCACACQgE3AhQgAkGcycKAADYCECACQbWCgIAANgIsIAIgAkEoajYCICACIAJBDGo2AiggAkEQahCYiICAACEBIABBAToAACAAIAE2AgQMAwsgAEEAOwEADAILIABBgAI7AQAMAQsgAEGABDsBAAsgAkEwaiSAgICAAAvHAgIDfwF+I4CAgIAAQdAAayICJICAgIAAAkACQAJAIAFBCGooAgAiA0EBTQ0AIAIgA0F+ajYCHCACIAEoAgBBAmo2AhggAiACQRhqEJaIgIAAIAIoAgBFDQEgAkEoaiACQQxqKQIANwMAIAIgAikCBDcDICACQcQAakEBNgIAIAJCATcCNCACQfDJwoAANgIwIAJBtoKAgAA2AkwgAiACQcgAajYCQCACIAJBIGo2AkggAkEwahCYiICAACEBAkAgAigCIEUNACACQSBqEJeIgIAACwJAIAIoAiQiA0UNACACQShqKAIAIgRFDQAgAyAEQQEQt4WAgAALIABBATYCACAAIAE2AgQMAgtBAiADQcTJwoAAELiQgIAAAAsgAkEQaikDABDXjoCAACEFIABBADYCACAAIAU3AwgLIAJB0ABqJICAgIAAC0gAAkACQAJAIAAtAAAOAwABAgALIAFBgMnCgABBCBDxkICAAA8LIAFB+sjCgABBBhDxkICAAA8LIAFB9MjCgABBBhDxkICAAAuFAgEFfwJAIAAoAggiAUUNACAAKAIAIgIgAUEMbGohAwNAAkAgAkEIaigCACIBRQ0AIAIoAgAiACABQSxsaiEEA0ACQCAAKAIAIgFFDQAgAEEEaigCACIFRQ0AIAEgBUEBELeFgIAACwJAAkACQCAAQQxqKAIADgMAAQIBCyAAQRRqKAIAIgFFDQEgAEEQaigCACABQQEQt4WAgAAMAQsgAEEUaigCACIBRQ0AIABBEGooAgAgAUEBdEECELeFgIAACyAAQSxqIgAgBEcNAAsLIAJBDGohAAJAIAJBBGooAgAiAUUNACACKAIAIAFBLGxBBBC3hYCAAAsgACECIAAgA0cNAAsLC2gBAn8CQAJAIAAoAgQiAUEDSw0AIAFBAkcNAQsgAEEQaiIBEJyIgIAAIABBFGooAgAiAkUNACABKAIAIAJBDGxBBBC3hYCAAAsCQCAAQSRqKAIAIgFFDQAgACgCICABQQEQt4WAgAALCwIACyMBAX8CQCAAQQRqKAIAIgFFDQAgACgCACABQQEQt4WAgAALC0kBAX8CQAJAIAAoAgQiAUEDSw0AIAFBAkcNAQsgAEEQaiIBEJyIgIAAIABBFGooAgAiAEUNACABKAIAIABBDGxBBBC3hYCAAAsLFAAgAEEoNgIEIABB+MnCgAA2AgALWwEBfyOAgICAAEEQayICJICAgIAAIAJBCGogARDWjYCAACACIAIoAgggAigCDCgCGBGEgICAAAAgAigCBCEBIAAgAigCADYCACAAIAE2AgQgAkEQaiSAgICAAAsMAEKukczT6aewrwELDQBCzZiuj877puOJfwsXACAAQbDKwoAANgIEIAAgAUEgajYCAAsXACAAQezKwoAANgIEIAAgAUEgajYCAAt0AQJ/AkACQCAAKAIEIgFBA0sNACABQQJHDQELIABBEGoiARCciICAACAAQRRqKAIAIgJFDQAgASgCACACQQxsQQQQt4WAgAALAkAgAEEkaigCACIBRQ0AIAAoAiAgAUEBELeFgIAACyAAQSxBBBC3hYCAAAtVAQJ/AkACQCAAKAIEIgFBA0sNACABQQJHDQELIABBEGoiARCciICAACAAQRRqKAIAIgJFDQAgASgCACACQQxsQQQQt4WAgAALIABBKEEEELeFgIAACxQAIABBqMvCgAA2AgQgACABNgIACxQAIABB5MvCgAA2AgQgACABNgIACxcAIABBIGpBACABQvCMg5eI0fONE1EbCxgAIABBIGpBACABQuuRk7X22LOi9ABRGwtVAQJ/AkACQCAAKAIEIgJBA0sNACACQQJHDQELIABBEGoiAhCciICAACAAQRRqKAIAIgNFDQAgAigCACADQQxsQQQQt4WAgAALIABBLEEEELeFgIAAC1UBAn8CQAJAIAAoAgQiAkEDSw0AIAJBAkcNAQsgAEEQaiICEJyIgIAAIABBFGooAgAiA0UNACACKAIAIANBDGxBBBC3hYCAAAsgAEEoQQQQt4WAgAALDAAgACABENiNgIAACw4AIAAgASACENeNgIAAC0cBAX8jgICAgABBEGsiAiSAgICAACACQQhqIAAQ1o2AgAAgAigCCCABIAIoAgwoAhARiICAgAAAIQAgAkEQaiSAgICAACAAC4ABAQF/I4CAgIAAQcAAayICJICAgIAAIAIQsI+AgAAgAkEgakEYaiACQRhqKAIANgIAIAJBIGpBEGogAkEQaikDADcDACACQSBqQQhqIAJBCGopAwA3AwAgAiACKQMANwMgIAAgASACQSBqELOIgIAAIQEgAkHAAGokgICAgAAgAQt1AQF/AkBBKEEEELaFgIAAIgMNAEEoQQQQqJCAgAAACyADQZDMwoAANgIAIAMgATYCJCADIAA2AiAgAyACKQIANwIEIANBDGogAkEIaikCADcCACADQRRqIAJBEGopAgA3AgAgA0EcaiACQRhqKAIANgIAIAMLngEBAX8jgICAgABB0ABrIgEkgICAgAAgARCwj4CAACABQSBqQQhqIABBCGooAgA2AgAgASAAKQIANwMgIAFBMGpBGGogAUEYaigCADYCACABQTBqQRBqIAFBEGopAwA3AwAgAUEwakEIaiABQQhqKQMANwMAIAEgASkDADcDMCABQSBqIAFBMGoQtYiAgAAhACABQdAAaiSAgICAACAAC4EBAQF/AkBBLEEEELaFgIAAIgINAEEsQQQQqJCAgAAACyACQaTMwoAANgIAIAIgASkCADcCBCACIAApAgA3AiAgAkEMaiABQQhqKQIANwIAIAJBFGogAUEQaikCADcCACACQRxqIAFBGGooAgA2AgAgAkEoaiAAQQhqKAIANgIAIAILFAAgAEEoNgIEIABBuMzCgAA2AgALFAAgAEEoNgIEIABBuMzCgAA2AgALCQAgAEEANgIACwkAIABBADYCAAsJACAAQQA2AgALAgALAgALDABC4urvoMbRgdlQCw0AQs7Tgru33fuwun8LFAAgACgCACAAKAIEIAEQgpGAgAALFwAgACgCACAAQQhqKAIAIAEQgpGAgAALFwAgACgCACAAQQhqKAIAIAEQhZGAgAALFAAgACgCACAAKAIEIAEQhZGAgAALDQAgAC0AAEF9akECSQtNAQF/IABBAToACCAAQQE2AgAgAEEJakH/ASADQQdxdiIDIANBf2oiAyABIAMgAUkiAxsiBCADGyACajoAACAAIAEgBGtBACADGzYCBAtNAQJ/IAAgASgCBCICNgIYIAAgASgCACIDNgIUIAAgAjYCCCAAIAM2AgQgACABKAIIQQAgAhs2AiAgACACRUEBdCIBNgIQIAAgATYCAAsXACAAQQA2AgggACACNgIEIAAgATYCAAtVAQF/AkAgASgCCCIDIAJqIgIgASgCBEsNACAAIAM2AgQgASACNgIIIABBCGogAjYCACAAQQA2AgAPCyAAQQRqQeDMwoAAQQsQ246AgAAgAEEBNgIAC7oBAgN/AX4jgICAgABBIGsiBCSAgICAAAJAAkACQCABKAIIIgUgA2oiBiABKAIESw0AIAEgBjYCCCAGIAVJDQIgAiABKAIAIAVqIAMQvJGAgAAaQQAhAQwBCyAEQQhqQQRyQeDMwoAAQQsQ246AgAAgBCkCDCEHIABBDGogBEEIakEMaikCADcCACAAIAc3AgRBASEBCyAAIAE2AgAgBEEgaiSAgICAAA8LIAUgBkHQzcKAABC8kICAAAALcgEDfwJAAkAgASgCCCICQQFqIgMgASgCBCIESw0AIAIgBE8NASABIAM2AgggACABKAIAIAJqLQAAOgABIABBADoAAA8LIABBBGpB4MzCgABBCxDbjoCAACAAQQE6AAAPCyACIARB4M3CgAAQt5CAgAAAC84BAgF/An4jgICAgABBwABrIgMkgICAgAAgAyACNgIcIAMgATYCGCADQQA7ASYgA0EoaiADQRhqIANBJmpBAhDSjoCAAAJAAkACQCADKAIoDQAgAy8BJiICDQEgAEEEakHwzcKAAEEXENuOgIAAIABBATsBAAwCCyADQRBqIANBKGpBDGopAgAiBDcDACADIAMpAiwiBTcDCCAAQQxqIAQ3AgAgACAFNwIEIABBATsBAAwBCyAAQQA7AQAgACACOwECCyADQcAAaiSAgICAAAsQACAALwEAIAFBD3F2QQFxC6kBAQR/AkACQAJAAkACQCADKAIEIgQgAmoiBQ0AQQEhBgwBCyAFQX9KIgdFDQEgBSAHELmFgIAAIgZFDQILIAUgAkkNAiAGIAEgAhC8kYCAACIBIAJqIAMoAgAgBBC8kYCAABogACAFNgIIIAAgBTYCBCAAIAE2AgAgACADLwEIOwEMDwsQqZCA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kICAAAALIAogA0GU2MKAABC5kICAAAALIAkgCkGE2MKAABC8kICAAAALIAogA0GE2MKAABC5kICAAAALGgAgACACNgIEIAAgATYCACAAIAJBAXQ2AggLBwAgACgCCAtnAQN/AkACQCABKAIIIgMgAk0NACACQQF2IgQgASgCBCIFTw0BIAEoAgAgBGotAAAiAUEPcSABQQR2IAJBAXEbIQQLIAAgBDoAASAAIAMgAks6AAAPCyAEIAVBjNnCgAAQt5CAgAAAC1EBAn8jgICAgABBEGsiAiSAgICAACACIAApAgA3AwAgAiABKAIIIgMgACgCCCIAIAMgAEkbNgIIIAIgARDoiICAACEAIAJBEGokgICAgAAgAAuDAgEIf0EAIQICQAJAAkACQAJAIAEoAgggACgCCCIDRw0AIANBAXYiBCAAKAIEIgVLDQEgBCABKAIEIgZLDQIgACgCACIHIAEoAgAiCCAEELqRgIAADQAgA0F+cSEAA0AgAyAARiICDQEgAEEBdiIBIAVPDQQgASAGTw0FIABBAXEhBCAAQQFqIQAgByABai0AACIJQQ9xIAlBBHYgBBsgCCABai0AACIBQQ9xIAFBBHYgBBtGDQALCyACDwsgBCAFQazZwoAAELmQgIAAAAsgBCAGQbzZwoAAELmQgIAAAAsgASAFQYzZwoAAELeQgIAAAAsgASAGQYzZwoAAELeQgIAAAAuRAgELf0EAIQNBACAAKAIIIgQgAmsiBSAFIARLGyEGIAEoAggiByABKAIEIghBAXQiBGshCSAEIAdrIQogASgCACELIAAoAgAhDCAAKAIEIQ0CQAJAAkACQANAAkAgCSADag0AIAogCk8PCyAGIANGDQEgAiADaiIEQQF2IgEgDU8NAyAHIANqIgVBAXYiACAITw0CIANBAWohAyAMIAFqLQAAIgFBD3EgAUEEdiAEQQFxGyALIABqLQAAIgBBD3EgAEEEdiAFQQFxG0YNAAsgA0F/aiEGDAMLIAYgB2pBAXYiACAISQ0CCyAAIAhBnNnCgAAQt5CAgAAACyABIA1BjNnCgAAQt5CAgAAACyAGIApPC+oEAQV/QQIhBAJAAkACQAJAAkACQCADKALMASIFQX1qQQQgBUECSxsOBQUAAwECBQsgASADIAIQ6YiAgABFDQQgASgCCCACIAMoAghrIAMoAgRB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woAANgIQIAJB3oKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAw8CyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB34KAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAw7CyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB4IKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAw6CyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB4YKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAw5CyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB4oKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAw4CyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB44KAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAw3CyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB5IKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAw2CyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB5YKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAw1CyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB5oKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAw0CyACIABBAWo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB54KAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwzCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB6IKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwyCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB6YKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwxCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB6oKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwwCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB64KAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwvCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB7IKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwuCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB7YKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwtCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB7oKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwsCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB74KAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwrCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB8IKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwqCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB8YKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwpCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB8oKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwoCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB84KAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwnCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB9IKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwmCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB9YKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwlCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB9oKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwkCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB94KAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwjCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB+IKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwiCyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB+YKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwhCyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB+oKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwgCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB+4KAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwfCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB/IKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAweCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB/YKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwdCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB/oKAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwcCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJB/4KAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwbCyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBgIOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwaCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBgYOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwZCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBgoOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwYCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBg4OAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwXCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBhIOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwWCyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBhYOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwVCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBhoOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwUCyACIABBAWo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBh4OAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwTCyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBiIOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwSCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBiYOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwRCyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBioOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwQCyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBi4OAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwPCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBjIOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwOCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBjYOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwNCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBjoOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwMCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBj4OAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwLCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBkIOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwKCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBkYOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwJCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBkoOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwICyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBk4OAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwHCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBlIOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwGCyACIABBCGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBlYOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwFCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBloOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwECyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBl4OAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwDCyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBmIOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwCCyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBmYOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwBCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQdzawoAANgIQIAJBmoOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAsgAkEwaiSAgICAACAAC80BAQF/I4CAgIAAQdAAayICJICAgIAAIAAoAgAhACACQQhqQRRqQQE2AgAgAkEoakEUakECNgIAIAJBzABqQZuDgIAANgIAIAJCATcCDCACQdzawoAANgIIIAJBgYCAgAA2AiQgAkICNwIsIAJBtO7CgAA2AiggAiAAQQhqNgJIIAJBnIOAgAA2AkQgAiAANgJAIAIgAkEgajYCGCACIAJBKGo2AiAgAiACQcAAajYCOCABIAJBCGoQ8pCAgAAhACACQdAAaiSAgICAACAAC80BAQF/I4CAgIAAQdAAayICJICAgIAAIAAoAgAhACACQQhqQRRqQQE2AgAgAkEoakEUakECNgIAIAJBzABqQbuAgIAANgIAIAJCATcCDCACQdzawoAANgIIIAJBgYCAgAA2AiQgAkIDNwIsIAJBkPLCgAA2AiggAiAANgJIIAJBjIGAgAA2AkQgAiAAQRBqNgJAIAIgAkEgajYCGCACIAJBKGo2AiAgAiACQcAAajYCOCABIAJBCGoQ8pCAgAAhACACQdAAaiSAgICAACAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGdg4CAADYCHCACQfDhwoAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGBgICAADYCHCACQgE3AiQgAkHQ28KAADYCICACQbWCgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGdg4CAADYCHCACQYzhwoAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHc2sKAADYCACACQZ2DgIAANgIcIAJBpObCgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQuCAgEBfyOAgICAAEHgAGsiAiSAgICAACAAKAIAIQAgAkEIakEUakEBNgIAIAJBKGpBFGpBBDYCACACQdwAakGeg4CAADYCACACQcAAakEUakGeg4CAADYCACACQcwAakG7gICAADYCACACQgE3AgwgAkHc2sKAADYCCCACQYGAgIAANgIkIAJCBDcCLCACQcDqwoAANgIoIAIgAEEsajYCWCACIABBIGo2AlAgAiAAQRBqNgJIIAJBu4CAgAA2AkQgAiAANgJAIAIgAkEgajYCGCACIAJBKGo2AiAgAiACQcAAajYCOCABIAJBCGoQ8pCAgAAhACACQeAAaiSAgICAACAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGdg4CAADYCHCACQZTvwoAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGBgICAADYCHCACQgE3AiQgAkH85cKAADYCICACQZ+DgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQdzawoAANgIAIAJBgYCAgAA2AhwgAkIBNwIkIAJBlOfCgAA2AiAgAkGfg4CAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQdzawoAANgIAIAJBnYOAgAA2AhwgAkHU4cKAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGdg4CAADYCHCACQdjzwoAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHc2sKAADYCACACQZ2DgIAANgIcIAJBuPLCgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQutAQEBfyOAgICAAEHAAGsiAiSAgICAACAAKAIAIQAgAkEUakEBNgIAIAJBIGpBFGpBATYCACACQgE3AgQgAkHc2sKAADYCACACQYGAgIAANgIcIAJCAjcCJCACQdDuwoAANgIgIAJBnIOAgAA2AjwgAiAANgI4IAIgAkEYajYCECACIAJBIGo2AhggAiACQThqNgIwIAEgAhDykICAACEAIAJBwABqJICAgIAAIAALagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHc2sKAADYCACACQZ2DgIAANgIcIAJB+N/CgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQdzawoAANgIAIAJBnYOAgAA2AhwgAkHg3sKAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQdzawoAANgIAIAJBgYCAgAA2AhwgAkICNwIkIAJBwO/CgAA2AiAgAkGfg4CAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAutAQEBfyOAgICAAEHAAGsiAiSAgICAACAAKAIAIQAgAkEUakEBNgIAIAJBIGpBFGpBATYCACACQgE3AgQgAkHc2sKAADYCACACQYGAgIAANgIcIAJCATcCJCACQYzcwoAANgIgIAJBoIOAgAA2AjwgAiAANgI4IAIgAkEYajYCECACIAJBIGo2AhggAiACQThqNgIwIAEgAhDykICAACEAIAJBwABqJICAgIAAIAALFwAgACgCACAAQQhqKAIAIAEQhZGAgAALrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGBgICAADYCHCACQgI3AiQgAkHY7cKAADYCICACQYyBgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGdg4CAADYCHCACQbTjwoAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGBgICAADYCHCACQgE3AiQgAkHQ5MKAADYCICACQZyDgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGdg4CAADYCHCACQcTgwoAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHc2sKAADYCACACQZ2DgIAANgIcIAJBzObCgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQvNAQEBfyOAgICAAEHQAGsiAiSAgICAACAAKAIAIQAgAkEIakEUakEBNgIAIAJBKGpBFGpBAjYCACACQcwAakGfg4CAADYCACACQgE3AgwgAkHc2sKAADYCCCACQYGAgIAANgIkIAJCAjcCLCACQdDowoAANgIoIAIgAEEIajYCSCACQZ+DgIAANgJEIAIgADYCQCACIAJBIGo2AhggAiACQShqNgIgIAIgAkHAAGo2AjggASACQQhqEPKQgIAAIQAgAkHQAGokgICAgAAgAAvQAQEBfyOAgICAAEHQAGsiAiSAgICAACAAKAIAIQAgAkEIakEUakEBNgIAIAJBKGpBFGpBAjYCACACQcAAakEMakGeg4CAADYCACACQgE3AgwgAkHc2sKAADYCCCACQYGAgIAANgIkIAJCAjcCLCACQcTrwoAANgIoIAIgAEEMajYCSCACQZ6DgIAANgJEIAIgADYCQCACIAJBIGo2AhggAiACQShqNgIgIAIgAkHAAGo2AjggASACQQhqEPKQgIAAIQAgAkHQAGokgICAgAAgAAvNAQEBfyOAgICAAEHQAGsiAiSAgICAACAAKAIAIQAgAkEIakEUakEBNgIAIAJBKGpBFGpBAjYCACACQcwAakGcg4CAADYCACACQgE3AgwgAkHc2sKAADYCCCACQYGAgIAANgIkIAJCAjcCLCACQZzxwoAANgIoIAIgAEEQajYCSCACQYyBgIAANgJEIAIgADYCQCACIAJBIGo2AhggAiACQShqNgIgIAIgAkHAAGo2AjggASACQQhqEPKQgIAAIQAgAkHQAGokgICAgAAgAAvNAQEBfyOAgICAAEHQAGsiAiSAgICAACAAKAIAIQAgAkEIakEUakEBNgIAIAJBKGpBFGpBAjYCACACQcwAakG7gICAADYCACACQgE3AgwgAkHc2sKAADYCCCACQYGAgIAANgIkIAJCAjcCLCACQZjpwoAANgIoIAIgAEEQajYCSCACQbuAgIAANgJEIAIgADYCQCACIAJBIGo2AhggAiACQShqNgIgIAIgAkHAAGo2AjggASACQQhqEPKQgIAAIQAgAkHQAGokgICAgAAgAAtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQdzawoAANgIAIAJBnYOAgAA2AhwgAkH44sKAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC80BAQF/I4CAgIAAQdAAayICJICAgIAAIAAoAgAhACACQQhqQRRqQQE2AgAgAkEoakEUakECNgIAIAJBzABqQZyDgIAANgIAIAJCATcCDCACQdzawoAANgIIIAJBgYCAgAA2AiQgAkIDNwIsIAJB4OPCgAA2AiggAiAANgJIIAJBjIGAgAA2AkQgAiAAQQhqNgJAIAIgAkEgajYCGCACIAJBKGo2AiAgAiACQcAAajYCOCABIAJBCGoQ8pCAgAAhACACQdAAaiSAgICAACAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGdg4CAADYCHCACQfzawoAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHc2sKAADYCACACQZ2DgIAANgIcIAJB9ODCgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQdzawoAANgIAIAJBnYOAgAA2AhwgAkGo4sKAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGdg4CAADYCHCACQbTtwoAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHc2sKAADYCACACQZ2DgIAANgIcIAJBzN/CgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQutAQEBfyOAgICAAEHAAGsiAiSAgICAACAAKAIAIQAgAkEUakEBNgIAIAJBIGpBFGpBATYCACACQgE3AgQgAkHc2sKAADYCACACQYGAgIAANgIcIAJCAjcCJCACQazwwoAANgIgIAJBn4OAgAA2AjwgAiAANgI4IAIgAkEYajYCECACIAJBIGo2AhggAiACQThqNgIwIAEgAhDykICAACEAIAJBwABqJICAgIAAIAALrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGBgICAADYCHCACQgE3AiQgAkHg8sKAADYCICACQaCDgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQdzawoAANgIAIAJBgYCAgAA2AhwgAkIBNwIkIAJBuPPCgAA2AiAgAkGgg4CAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQdzawoAANgIAIAJBnYOAgAA2AhwgAkH03cKAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGdg4CAADYCHCACQcDswoAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGBgICAADYCHCACQgE3AiQgAkG45cKAADYCICACQYyBgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGdg4CAADYCHCACQZDswoAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGBgICAADYCHCACQgI3AiQgAkGA5cKAADYCICACQYyBgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGdg4CAADYCHCACQZjbwoAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELzQEBAX8jgICAgABB0ABrIgIkgICAgAAgACgCACEAIAJBCGpBFGpBATYCACACQShqQRRqQQI2AgAgAkHMAGpBnIOAgAA2AgAgAkIBNwIMIAJB3NrCgAA2AgggAkGBgICAADYCJCACQgI3AiwgAkHQ58KAADYCKCACIABBEGo2AkggAkGMgYCAADYCRCACIAA2AkAgAiACQSBqNgIYIAIgAkEoajYCICACIAJBwABqNgI4IAEgAkEIahDykICAACEAIAJB0ABqJICAgIAAIAALagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHc2sKAADYCACACQZ2DgIAANgIcIAJBtN7CgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQutAQEBfyOAgICAAEHAAGsiAiSAgICAACAAKAIAIQAgAkEUakEBNgIAIAJBIGpBFGpBATYCACACQgE3AgQgAkHc2sKAADYCACACQYGAgIAANgIcIAJCAjcCJCACQYTwwoAANgIgIAJBn4OAgAA2AjwgAiAANgI4IAIgAkEYajYCECACIAJBIGo2AhggAiACQThqNgIwIAEgAhDykICAACEAIAJBwABqJICAgIAAIAALagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHc2sKAADYCACACQZ2DgIAANgIcIAJB1N3CgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQutAQEBfyOAgICAAEHAAGsiAiSAgICAACAAKAIAIQAgAkEUakEBNgIAIAJBIGpBFGpBATYCACACQgE3AgQgAkHc2sKAADYCACACQYGAgIAANgIcIAJCAjcCJCACQdzwwoAANgIgIAJBn4OAgAA2AjwgAiAANgI4IAIgAkEYajYCECACIAJBIGo2AhggAiACQThqNgIwIAEgAhDykICAACEAIAJBwABqJICAgIAAIAALrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGBgICAADYCHCACQgE3AiQgAkGE88KAADYCICACQaCDgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGdg4CAADYCHCACQbjhwoAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELzQEBAX8jgICAgABB0ABrIgIkgICAgAAgACgCACEAIAJBCGpBFGpBATYCACACQShqQRRqQQI2AgAgAkHMAGpBnIOAgAA2AgAgAkIBNwIMIAJB3NrCgAA2AgggAkGBgICAADYCJCACQgI3AiwgAkGg38KAADYCKCACIABBEGo2AkggAkGMgYCAADYCRCACIAA2AkAgAiACQSBqNgIYIAIgAkEoajYCICACIAJBwABqNgI4IAEgAkEIahDykICAACEAIAJB0ABqJICAgIAAIAALagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHc2sKAADYCACACQZ2DgIAANgIcIAJBjN7CgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQvNAQEBfyOAgICAAEHQAGsiAiSAgICAACAAKAIAIQAgAkEIakEUakEBNgIAIAJBKGpBFGpBAjYCACACQcwAakG7gICAADYCACACQgE3AgwgAkHc2sKAADYCCCACQYGAgIAANgIkIAJCAzcCLCACQdjxwoAANgIoIAIgADYCSCACQYyBgIAANgJEIAIgAEEQajYCQCACIAJBIGo2AhggAiACQShqNgIgIAIgAkHAAGo2AjggASACQQhqEPKQgIAAIQAgAkHQAGokgICAgAAgAAtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQdzawoAANgIAIAJBnYOAgAA2AhwgAkGM4sKAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC80BAQF/I4CAgIAAQdAAayICJICAgIAAIAAoAgAhACACQQhqQRRqQQE2AgAgAkEoakEUakECNgIAIAJBzABqQYKAgIAANgIAIAJCATcCDCACQdzawoAANgIIIAJBgYCAgAA2AiQgAkICNwIsIAJByNzCgAA2AiggAiAAQQRqNgJIIAJBgoCAgAA2AkQgAiAANgJAIAIgAkEgajYCGCACIAJBKGo2AiAgAiACQcAAajYCOCABIAJBCGoQ8pCAgAAhACACQdAAaiSAgICAACAAC80BAQF/I4CAgIAAQdAAayICJICAgIAAIAAoAgAhACACQQhqQRRqQQE2AgAgAkEoakEUakECNgIAIAJBzABqQZyDgIAANgIAIAJCATcCDCACQdzawoAANgIIIAJBgYCAgAA2AiQgAkIDNwIsIAJBrN3CgAA2AiggAiAANgJIIAJBjIGAgAA2AkQgAiAAQQhqNgJAIAIgAkEgajYCGCACIAJBKGo2AiAgAiACQcAAajYCOCABIAJBCGoQ8pCAgAAhACACQdAAaiSAgICAACAAC80BAQF/I4CAgIAAQdAAayICJICAgIAAIAAoAgAhACACQQhqQRRqQQE2AgAgAkEoakEUakECNgIAIAJBzABqQbuAgIAANgIAIAJCATcCDCACQdzawoAANgIIIAJBgYCAgAA2AiQgAkICNwIsIAJBiOvCgAA2AiggAiAAQRBqNgJIIAJBu4CAgAA2AkQgAiAANgJAIAIgAkEgajYCGCACIAJBKGo2AiAgAiACQcAAajYCOCABIAJBCGoQ8pCAgAAhACACQdAAaiSAgICAACAAC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQdzawoAANgIAIAJBgYCAgAA2AhwgAkICNwIkIAJBkOjCgAA2AiAgAkGgg4CAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAsQACAAQdAAaiABEJCNgIAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGdg4CAADYCHCACQbDbwoAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHc2sKAADYCACACQZ2DgIAANgIcIAJB6NvCgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQdzawoAANgIAIAJBnYOAgAA2AhwgAkHk7MKAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB3NrCgAA2AgAgAkGdg4CAADYCHCACQYzuwoAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAEL/wIBBH8jgICAgABBkAFrIgMkgICAgAAgAyACOgAIIAMgA0EIakHUocOAAEGgnsOAABCSjYCAACADKAIEIQQgAygCACEFIAMtAAghBgJAAkBBEEEEELaFgIAAIgJFDQAgAiAGOgAMIAJBrKHDgAA2AgAgAiAENgIIIANBFGogAUEIaigCADYCACADQcAAOgAIIAMgASkCADcCDCADIANBCGo2AlwgA0Ghg4CAADYCdCADIANB3ABqNgJwIANBATYCjAEgA0IBNwJ8IANBpJ3DgAA2AnggAyADQfAAajYCiAEgA0HgAGogA0H4AGoQrZCAgAAgAkEANgIEQRxBBBC2hYCAACIBRQ0BIAEgBDYCCCABIAU2AgQgAUGAosOAADYCACABIAMpA2A3AgwgASACNgIYIAFBFGogA0HgAGpBCGooAgA2AgAgACADQQhqQdAAELyRgIAAIAE2AlAgA0GQAWokgICAgAAPC0EQQQQQqJCAgAAAC0EcQQQQqJCAgAAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGdg4CAADYCHCACQbT5woAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGBgICAADYCHCACQgE3AiQgAkH4+cKAADYCICACQaKDgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAACxcAIAAoAgAgAEEIaigCACABEIWRgIAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGdg4CAADYCHCACQbj7woAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGBgICAADYCHCACQgE3AiQgAkGY+MKAADYCICACQaKDgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBgYCAgAA2AhwgAkIBNwIkIAJBpPTCgAA2AiAgAkGig4CAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBnYOAgAA2AhwgAkGA/8KAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGdg4CAADYCHCACQbiGw4AANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELzQEBAX8jgICAgABB0ABrIgIkgICAgAAgACgCACEAIAJBCGpBFGpBATYCACACQShqQRRqQQI2AgAgAkHMAGpBj4CAgAA2AgAgAkIBNwIMIAJB4PPCgAA2AgggAkGBgICAADYCJCACQgI3AiwgAkGU98KAADYCKCACIABBCGo2AkggAkGPgICAADYCRCACIAA2AkAgAiACQSBqNgIYIAIgAkEoajYCICACIAJBwABqNgI4IAEgAkEIahDykICAACEAIAJB0ABqJICAgIAAIAALagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHg88KAADYCACACQZ2DgIAANgIcIAJBgP7CgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBnYOAgAA2AhwgAkHYhsOAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBgYCAgAA2AhwgAkIBNwIkIAJBrPXCgAA2AiAgAkGMgYCAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBnYOAgAA2AhwgAkHU+MKAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBgYCAgAA2AhwgAkIBNwIkIAJB/IXDgAA2AiAgAkG7gICAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBnYOAgAA2AhwgAkHI+sKAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC9ABAQF/I4CAgIAAQdAAayICJICAgIAAIAAoAgAhACACQQhqQRRqQQE2AgAgAkEoakEUakECNgIAIAJBwABqQQxqQaKDgIAANgIAIAJCATcCDCACQeDzwoAANgIIIAJBgYCAgAA2AiQgAkICNwIsIAJB/PPCgAA2AiggAiAAQQxqNgJIIAJBooOAgAA2AkQgAiAANgJAIAIgAkEgajYCGCACIAJBKGo2AiAgAiACQcAAajYCOCABIAJBCGoQ8pCAgAAhACACQdAAaiSAgICAACAAC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBgYCAgAA2AhwgAkIBNwIkIAJB3PbCgAA2AiAgAkGig4CAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAutAQEBfyOAgICAAEHAAGsiAiSAgICAACAAKAIAIQAgAkEUakEBNgIAIAJBIGpBFGpBATYCACACQgE3AgQgAkHg88KAADYCACACQYGAgIAANgIcIAJCATcCJCACQYSCw4AANgIgIAJBo4OAgAA2AjwgAiAANgI4IAIgAkEYajYCECACIAJBIGo2AhggAiACQThqNgIwIAEgAhDykICAACEAIAJBwABqJICAgIAAIAALFwAgACgCACAAQQhqKAIAIAEQgpGAgAALrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGBgICAADYCHCACQgE3AiQgAkHI9cKAADYCICACQYyBgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGdg4CAADYCHCACQej/woAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHg88KAADYCACACQZ2DgIAANgIcIAJB7PrCgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBnYOAgAA2AhwgAkGchsOAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGdg4CAADYCHCACQbD8woAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGBgICAADYCHCACQgE3AiQgAkGkgsOAADYCICACQaKDgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC/ABAQF/I4CAgIAAQeAAayICJICAgIAAIAAoAgAhACACQcQAakGygICAADYCACACIABBEGo2AkAgAkGygICAADYCPCACIAA2AjggAkECNgJcIAJCAzcCTCACQciDw4AANgJIIAIgAkE4ajYCWCACQShqIAJByABqEK2QgIAAIAJBHGpBATYCACACQaKDgIAANgIkIAJCATcCDCACQeDzwoAANgIIIAIgAkEoajYCICACIAJBIGo2AhggASACQQhqEPKQgIAAIQACQCACKAIsIgFFDQAgAigCKCABQQEQt4WAgAALIAJB4ABqJICAgIAAIAALagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHg88KAADYCACACQZ2DgIAANgIcIAJBlIHDgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBnYOAgAA2AhwgAkGc/sKAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC9ABAQF/I4CAgIAAQdAAayICJICAgIAAIAAoAgAhACACQQhqQRRqQQE2AgAgAkEoakEUakECNgIAIAJBwABqQQxqQZ6DgIAANgIAIAJCATcCDCACQeDzwoAANgIIIAJBgYCAgAA2AiQgAkICNwIsIAJB7ITDgAA2AiggAiAAQQxqNgJIIAJBnoOAgAA2AkQgAiAANgJAIAIgAkEgajYCGCACIAJBKGo2AiAgAiACQcAAajYCOCABIAJBCGoQ8pCAgAAhACACQdAAaiSAgICAACAAC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBgYCAgAA2AhwgAkICNwIkIAJBsP/CgAA2AiAgAkGig4CAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBnYOAgAA2AhwgAkGAgMOAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC80BAQF/I4CAgIAAQdAAayICJICAgIAAIAAoAgAhACACQQhqQRRqQQE2AgAgAkEoakEUakECNgIAIAJBzABqQY+AgIAANgIAIAJCATcCDCACQeDzwoAANgIIIAJBgYCAgAA2AiQgAkICNwIsIAJB6PTCgAA2AiggAiAANgJIIAJBooOAgAA2AkQgAiAAQQhqNgJAIAIgAkEgajYCGCACIAJBKGo2AiAgAiACQcAAajYCOCABIAJBCGoQ8pCAgAAhACACQdAAaiSAgICAACAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGdg4CAADYCHCACQaSHw4AANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAEL0AEBAX8jgICAgABB0ABrIgIkgICAgAAgACgCACEAIAJBCGpBFGpBATYCACACQShqQRRqQQI2AgAgAkHAAGpBDGpBooOAgAA2AgAgAkIBNwIMIAJB4PPCgAA2AgggAkGBgICAADYCJCACQgI3AiwgAkHogsOAADYCKCACIABBDGo2AkggAkGig4CAADYCRCACIAA2AkAgAiACQSBqNgIYIAIgAkEoajYCICACIAJBwABqNgI4IAEgAkEIahDykICAACEAIAJB0ABqJICAgIAAIAALagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHg88KAADYCACACQZ2DgIAANgIcIAJBtIDDgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQsPACAAKAIAIAEQ2ImAgAALtSgBAX8jgICAgABBMGsiAiSAgICAAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAAAOOQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3OAALIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGkg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDgLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGlg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDcLIAIgAEEIajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGmg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDYLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGng4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDULIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGog4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDQLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGpg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDMLIAIgAEEIajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGqg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDILIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGrg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDELIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGsg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDALIAIgAEEIajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGtg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADC8LIAIgAEEIajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGug4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADC4LIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGvg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADC0LIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGwg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCwLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGxg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCsLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGyg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCoLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkGzg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCkLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkG0g4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCgLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkG1g4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCcLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkG2g4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCYLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkG3g4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCULIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkG4g4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCQLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkG4g4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCMLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkG5g4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCILIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkG6g4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCELIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkG7g4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCALIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkG8g4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADB8LIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkG9g4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADB4LIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkG+g4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADB0LIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkG/g4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBwLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHAg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBsLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHBg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBoLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHCg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBkLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHDg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBgLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHEg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBcLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHFg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBYLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHFg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBULIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHGg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBQLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHHg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBMLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHIg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBILIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHJg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBELIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHKg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBALIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHLg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADA8LIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHMg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADA4LIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHNg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADA0LIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHOg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAwLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHPg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAsLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHQg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAoLIAIgAEEIajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHRg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAkLIAIgAEEIajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHSg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAgLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHTg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAcLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHUg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAYLIAIgAEEIajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHVg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAULIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHWg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAQLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHXg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAMLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHYg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAILIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHZg4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAELIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB4PPCgAA2AhAgAkHag4CAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEACyACQTBqJICAgIAAIAALzQEBAX8jgICAgABB0ABrIgIkgICAgAAgACgCACEAIAJBCGpBFGpBATYCACACQShqQRRqQQI2AgAgAkHMAGpBj4CAgAA2AgAgAkIBNwIMIAJB4PPCgAA2AgggAkGBgICAADYCJCACQgI3AiwgAkHs98KAADYCKCACIABBCGo2AkggAkGPgICAADYCRCACIAA2AkAgAiACQSBqNgIYIAIgAkEoajYCICACIAJBwABqNgI4IAEgAkEIahDykICAACEAIAJB0ABqJICAgIAAIAALagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHg88KAADYCACACQZ2DgIAANgIcIAJBzP3CgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQutAQEBfyOAgICAAEHAAGsiAiSAgICAACAAKAIAIQAgAkEUakEBNgIAIAJBIGpBFGpBATYCACACQgE3AgQgAkHg88KAADYCACACQYGAgIAANgIcIAJCATcCJCACQaz2woAANgIgIAJBooOAgAA2AjwgAiAANgI4IAIgAkEYajYCECACIAJBIGo2AhggAiACQThqNgIwIAEgAhDykICAACEAIAJBwABqJICAgIAAIAALrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGBgICAADYCHCACQgE3AiQgAkGg+sKAADYCICACQaKDgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGdg4CAADYCHCACQcD4woAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHg88KAADYCACACQZ2DgIAANgIcIAJB7IDDgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQvNAQEBfyOAgICAAEHQAGsiAiSAgICAACAAKAIAIQAgAkEIakEUakEBNgIAIAJBKGpBFGpBAjYCACACQcwAakG7gICAADYCACACQgE3AgwgAkHg88KAADYCCCACQYGAgIAANgIkIAJCAjcCLCACQfz1woAANgIoIAIgADYCSCACQYyBgIAANgJEIAIgAEEQajYCQCACIAJBIGo2AhggAiACQShqNgIgIAIgAkHAAGo2AjggASACQQhqEPKQgIAAIQAgAkHQAGokgICAgAAgAAtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBnYOAgAA2AhwgAkHE/MKAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGdg4CAADYCHCACQeT7woAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGBgICAADYCHCACQgE3AiQgAkHU+cKAADYCICACQaKDgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBgYCAgAA2AhwgAkIBNwIkIAJBkPXCgAA2AiAgAkGMgYCAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAvNAQEBfyOAgICAAEHQAGsiAiSAgICAACAAKAIAIQAgAkEIakEUakEBNgIAIAJBKGpBFGpBAjYCACACQcwAakG7gICAADYCACACQgE3AgwgAkHg88KAADYCCCACQYGAgIAANgIkIAJCAjcCLCACQaiEw4AANgIoIAIgAEEQajYCSCACQbuAgIAANgJEIAIgADYCQCACIAJBIGo2AhggAiACQShqNgIgIAIgAkHAAGo2AjggASACQQhqEPKQgIAAIQAgAkHQAGokgICAgAAgAAvQAQEBfyOAgICAAEHQAGsiAiSAgICAACAAKAIAIQAgAkEIakEUakEBNgIAIAJBKGpBFGpBAjYCACACQcAAakEMakGeg4CAADYCACACQgE3AgwgAkHg88KAADYCCCACQYGAgIAANgIkIAJCAjcCLCACQbCFw4AANgIoIAIgAEEMajYCSCACQZ6DgIAANgJEIAIgADYCQCACIAJBIGo2AhggAiACQShqNgIgIAIgAkHAAGo2AjggASACQQhqEPKQgIAAIQAgAkHQAGokgICAgAAgAAutAQEBfyOAgICAAEHAAGsiAiSAgICAACAAKAIAIQAgAkEUakEBNgIAIAJBIGpBFGpBATYCACACQgE3AgQgAkHg88KAADYCACACQYGAgIAANgIcIAJCATcCJCACQYT5woAANgIgIAJBooOAgAA2AjwgAiAANgI4IAIgAkEYajYCECACIAJBIGo2AhggAiACQThqNgIwIAEgAhDykICAACEAIAJBwABqJICAgIAAIAALagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHg88KAADYCACACQZ2DgIAANgIcIAJBhIfDgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBnYOAgAA2AhwgAkHA/sKAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGdg4CAADYCHCACQYz7woAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHg88KAADYCACACQZ2DgIAANgIcIAJBjP3CgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBnYOAgAA2AhwgAkHEgcOAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABCw8AIABBOGogARCQjYCAAAsEACAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB4PPCgAA2AgAgAkGdg4CAADYCHCACQZz8woAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHg88KAADYCACACQZ2DgIAANgIcIAJBsP3CgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQeDzwoAANgIAIAJBnYOAgAA2AhwgAkHg/sKAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC5AEAQN/I4CAgIAAQYABayIDJICAgIAAIANB2ABqQQhqIgQgAUEIaigCADYCACADQdgAakEUaiACQQhqKAIANgIAIAMgAikCADcCZCADQRRqIAQpAwA3AgAgA0EIakEUaiADQdgAakEQaikDADcCACADQQA6AAggAyABKQIANwIMIAMgA0EIajYCRCADQduDgIAANgJ0IAMgA0HEAGo2AnAgA0EBNgJsIANCATcCXCADQaSdw4AANgJYIAMgA0HwAGo2AmggA0HIAGogA0HYAGoQrZCAgAAgA0HwAGpBCGoiASADQcgAakEIaigCADYCACADIAMpA0g3A3AgAyADQfAAakGAocOAAEGQnsOAABCSjYCAACADKAIEIQIgAygCACEFIAQgASgCADYCACADIAMpA3A3A1gCQEEYQQQQtoWAgAAiAQ0AQRhBBBCokICAAAALIAEgBTYCBCABQdigw4AANgIAIAEgAykDWDcCDCABIAI2AgggAUEUaiAEKAIANgIAIABBMGogA0EIakEwaikDADcDACAAQShqIANBCGpBKGopAwA3AwAgAEEgaiADQQhqQSBqKQMANwMAIABBGGogA0EIakEYaikDADcDACAAQRBqIANBCGpBEGopAwA3AwAgAEEIaiADQQhqQQhqKQMANwMAIAAgAykDCDcDACAAIAE2AjggA0GAAWokgICAgAAL0QMBBH8jgICAgABBgAFrIgIkgICAgAAgAkEUaiABQQhqKAIANgIAIAJBBDoACCACIAEpAgA3AgwgAiACQQhqNgJEIAJB24OAgAA2AnQgAiACQcQAajYCcCACQQE2AmwgAkIBNwJcIAJBpJ3DgAA2AlggAiACQfAAajYCaCACQcgAaiACQdgAahCtkICAACACQfAAakEIaiIBIAJByABqQQhqKAIANgIAIAIgAikDSDcDcCACIAJB8ABqQYChw4AAQZCew4AAEJKNgIAAIAIoAgQhAyACKAIAIQQgAkHYAGpBCGoiBSABKAIANgIAIAIgAikDcDcDWAJAQRhBBBC2hYCAACIBDQBBGEEEEKiQgIAAAAsgASAENgIEIAFB2KDDgAA2AgAgASACKQNYNwIMIAEgAzYCCCABQRRqIAUoAgA2AgAgAEEwaiACQQhqQTBqKQMANwMAIABBKGogAkEIakEoaikDADcDACAAQSBqIAJBCGpBIGopAwA3AwAgAEEYaiACQQhqQRhqKQMANwMAIABBEGogAkEIakEQaikDADcDACAAQQhqIAJBCGpBCGopAwA3AwAgACACKQMINwMAIAAgATYCOCACQYABaiSAgICAAAviAwEHfyOAgICAAEGAAWsiBCSAgICAACAEQQhqQRhqIgUgASkCADcDACAEQQhqQRBqIgYgAzcDACAEQQhqQSBqIgcgAUEIaigCADYCACAEIAI3AxAgBEEGOgAIIAQgBEEIajYCRCAEQduDgIAANgJ0IAQgBEHEAGo2AnAgBEEBNgJsIARCATcCXCAEQaSdw4AANgJYIAQgBEHwAGo2AmggBEHIAGogBEHYAGoQrZCAgAAgBEHwAGpBCGoiASAEQcgAakEIaigCADYCACAEIAQpA0g3A3AgBCAEQfAAakGAocOAAEGQnsOAABCSjYCAACAEKAIEIQggBCgCACEJIARB2ABqQQhqIgogASgCADYCACAEIAQpA3A3A1gCQEEYQQQQtoWAgAAiAQ0AQRhBBBCokICAAAALIAEgCTYCBCABQdigw4AANgIAIAEgBCkDWDcCDCABIAg2AgggAUEUaiAKKAIANgIAIABBMGogBEEIakEwaikDADcDACAAQShqIARBCGpBKGopAwA3AwAgAEEgaiAHKQMANwMAIABBGGogBSkDADcDACAAQRBqIAYpAwA3AwAgAEEIaiAEQQhqQQhqKQMANwMAIAAgBCkDCDcDACAAIAE2AjggBEGAAWokgICAgAAL0QMBBH8jgICAgABBgAFrIgIkgICAgAAgAkEUaiABQQhqKAIANgIAIAJBBzoACCACIAEpAgA3AgwgAiACQQhqNgJEIAJB24OAgAA2AnQgAiACQcQAajYCcCACQQE2AmwgAkIBNwJcIAJBpJ3DgAA2AlggAiACQfAAajYCaCACQcgAaiACQdgAahCtkICAACACQfAAakEIaiIBIAJByABqQQhqKAIANgIAIAIgAikDSDcDcCACIAJB8ABqQYChw4AAQZCew4AAEJKNgIAAIAIoAgQhAyACKAIAIQQgAkHYAGpBCGoiBSABKAIANgIAIAIgAikDcDcDWAJAQRhBBBC2hYCAACIBDQBBGEEEEKiQgIAAAAsgASAENgIEIAFB2KDDgAA2AgAgASACKQNYNwIMIAEgAzYCCCABQRRqIAUoAgA2AgAgAEEwaiACQQhqQTBqKQMANwMAIABBKGogAkEIakEoaikDADcDACAAQSBqIAJBCGpBIGopAwA3AwAgAEEYaiACQQhqQRhqKQMANwMAIABBEGogAkEIakEQaikDADcDACAAQQhqIAJBCGpBCGopAwA3AwAgACACKQMINwMAIAAgATYCOCACQYABaiSAgICAAAvRAwEEfyOAgICAAEGAAWsiAiSAgICAACACQRRqIAFBCGooAgA2AgAgAkELOgAIIAIgASkCADcCDCACIAJBCGo2AkQgAkHbg4CAADYCdCACIAJBxABqNgJwIAJBATYCbCACQgE3AlwgAkGkncOAADYCWCACIAJB8ABqNgJoIAJByABqIAJB2ABqEK2QgIAAIAJB8ABqQQhqIgEgAkHIAGpBCGooAgA2AgAgAiACKQNINwNwIAIgAkHwAGpBgKHDgABBkJ7DgAAQko2AgAAgAigCBCEDIAIoAgAhBCACQdgAakEIaiIFIAEoAgA2AgAgAiACKQNwNwNYAkBBGEEEELaFgIAAIgENAEEYQQQQqJCAgAAACyABIAQ2AgQgAUHYoMOAADYCACABIAIpA1g3AgwgASADNgIIIAFBFGogBSgCADYCACAAQTBqIAJBCGpBMGopAwA3AwAgAEEoaiACQQhqQShqKQMANwMAIABBIGogAkEIakEgaikDADcDACAAQRhqIAJBCGpBGGopAwA3AwAgAEEQaiACQQhqQRBqKQMANwMAIABBCGogAkEIakEIaikDADcDACAAIAIpAwg3AwAgACABNgI4IAJBgAFqJICAgIAAC9MDAQR/I4CAgIAAQYABayICJICAgIAAIAIgATYCECACQQhqIAJBEGpBrKDDgABBoJ7DgAAQko2AgAAgAigCDCEDIAIoAgghBCACKAIQIQECQAJAQRBBBBC2hYCAACIFRQ0AIAUgATYCDCAFQYSgw4AANgIAIAUgAzYCCCACQRo6ABAgAiACQRBqNgJMIAJB24OAgAA2AmQgAiACQcwAajYCYCACQQE2AnwgAkIBNwJsIAJBpJ3DgAA2AmggAiACQeAAajYCeCACQdAAaiACQegAahCtkICAACAFQQA2AgRBHEEEELaFgIAAIgFFDQEgASADNgIIIAEgBDYCBCABQYCiw4AANgIAIAEgAikDUDcCDCABIAU2AhggAUEUaiACQdAAakEIaigCADYCACAAQTBqIAJBEGpBMGopAwA3AwAgAEEoaiACQRBqQShqKQMANwMAIABBIGogAkEQakEgaikDADcDACAAQRhqIAJBEGpBGGopAwA3AwAgAEEQaiACQRBqQRBqKQMANwMAIABBCGogAkEQakEIaikDADcDACAAIAIpAxA3AwAgACABNgI4IAJBgAFqJICAgIAADwtBEEEEEKiQgIAAAAtBHEEEEKiQgIAAAAvHBAEGfyOAgICAAEGAAWsiAiSAgICAACACQegAakEQaiIDIAFBEGooAgA2AgAgAkHoAGpBCGoiBCABQQhqKQIANwMAIAIgASkCADcDaCACQQhqIAJB6ABqQdifw4AAQaCew4AAEJKNgIAAIAIoAgwhBSACKAIIIQYgAkEQakEQaiIHIAMoAgA2AgAgAkEQakEIaiIDIAQpAwA3AwAgAiACKQNoNwMQAkACQEEgQQQQtoWAgAAiAUUNACABQbCfw4AANgIAIAEgAikDEDcCDCABIAU2AgggAUEUaiADKQMANwIAIAFBHGogBygCADYCACACQRs6ABAgAiACQRBqNgJMIAJB24OAgAA2AmQgAiACQcwAajYCYCACQQE2AnwgAkIBNwJsIAJBpJ3DgAA2AmggAiACQeAAajYCeCACQdAAaiACQegAahCtkICAACABQQA2AgRBHEEEELaFgIAAIgNFDQEgAyAFNgIIIAMgBjYCBCADQYCiw4AANgIAIAMgAikDUDcCDCADIAE2AhggA0EUaiACQdAAakEIaigCADYCACAAQTBqIAJBEGpBMGopAwA3AwAgAEEoaiACQRBqQShqKQMANwMAIABBIGogAkEQakEgaikDADcDACAAQRhqIAJBEGpBGGopAwA3AwAgAEEQaiACQRBqQRBqKQMANwMAIABBCGogAkEQakEIaikDADcDACAAIAIpAxA3AwAgACADNgI4IAJBgAFqJICAgIAADwtBIEEEEKiQgIAAAAtBHEEEEKiQgIAAAAvRAwEEfyOAgICAAEGAAWsiAiSAgICAACACQRRqIAFBCGooAgA2AgAgAkEsOgAIIAIgASkCADcCDCACIAJBCGo2AkQgAkHbg4CAADYCdCACIAJBxABqNgJwIAJBATYCbCACQgE3AlwgAkGkncOAADYCWCACIAJB8ABqNgJoIAJByABqIAJB2ABqEK2QgIAAIAJB8ABqQQhqIgEgAkHIAGpBCGooAgA2AgAgAiACKQNINwNwIAIgAkHwAGpBgKHDgABBkJ7DgAAQko2AgAAgAigCBCEDIAIoAgAhBCACQdgAakEIaiIFIAEoAgA2AgAgAiACKQNwNwNYAkBBGEEEELaFgIAAIgENAEEYQQQQqJCAgAAACyABIAQ2AgQgAUHYoMOAADYCACABIAIpA1g3AgwgASADNgIIIAFBFGogBSgCADYCACAAQTBqIAJBCGpBMGopAwA3AwAgAEEoaiACQQhqQShqKQMANwMAIABBIGogAkEIakEgaikDADcDACAAQRhqIAJBCGpBGGopAwA3AwAgAEEQaiACQQhqQRBqKQMANwMAIABBCGogAkEIakEIaikDADcDACAAIAIpAwg3AwAgACABNgI4IAJBgAFqJICAgIAAC8cEAQZ/I4CAgIAAQYABayICJICAgIAAIAJB6ABqQRBqIgMgAUEQaigCADYCACACQegAakEIaiIEIAFBCGopAgA3AwAgAiABKQIANwNoIAJBCGogAkHoAGpB2J/DgABBoJ7DgAAQko2AgAAgAigCDCEFIAIoAgghBiACQRBqQRBqIgcgAygCADYCACACQRBqQQhqIgMgBCkDADcDACACIAIpA2g3AxACQAJAQSBBBBC2hYCAACIBRQ0AIAFBsJ/DgAA2AgAgASACKQMQNwIMIAEgBTYCCCABQRRqIAMpAwA3AgAgAUEcaiAHKAIANgIAIAJBNjoAECACIAJBEGo2AkwgAkHbg4CAADYCZCACIAJBzABqNgJgIAJBATYCfCACQgE3AmwgAkGkncOAADYCaCACIAJB4ABqNgJ4IAJB0ABqIAJB6ABqEK2QgIAAIAFBADYCBEEcQQQQtoWAgAAiA0UNASADIAU2AgggAyAGNgIEIANBgKLDgAA2AgAgAyACKQNQNwIMIAMgATYCGCADQRRqIAJB0ABqQQhqKAIANgIAIABBMGogAkEQakEwaikDADcDACAAQShqIAJBEGpBKGopAwA3AwAgAEEgaiACQRBqQSBqKQMANwMAIABBGGogAkEQakEYaikDADcDACAAQRBqIAJBEGpBEGopAwA3AwAgAEEIaiACQRBqQQhqKQMANwMAIAAgAikDEDcDACAAIAM2AjggAkGAAWokgICAgAAPC0EgQQQQqJCAgAAAC0EcQQQQqJCAgAAAC8cEAQZ/I4CAgIAAQYABayICJICAgIAAIAJB6ABqQRBqIgMgAUEQaigCADYCACACQegAakEIaiIEIAFBCGopAgA3AwAgAiABKQIANwNoIAJBCGogAkHoAGpB2J/DgABBoJ7DgAAQko2AgAAgAigCDCEFIAIoAgghBiACQRBqQRBqIgcgAygCADYCACACQRBqQQhqIgMgBCkDADcDACACIAIpA2g3AxACQAJAQSBBBBC2hYCAACIBRQ0AIAFBsJ/DgAA2AgAgASACKQMQNwIMIAEgBTYCCCABQRRqIAMpAwA3AgAgAUEcaiAHKAIANgIAIAJBNzoAECACIAJBEGo2AkwgAkHbg4CAADYCZCACIAJBzABqNgJgIAJBATYCfCACQgE3AmwgAkGkncOAADYCaCACIAJB4ABqNgJ4IAJB0ABqIAJB6ABqEK2QgIAAIAFBADYCBEEcQQQQtoWAgAAiA0UNASADIAU2AgggAyAGNgIEIANBgKLDgAA2AgAgAyACKQNQNwIMIAMgATYCGCADQRRqIAJB0ABqQQhqKAIANgIAIABBMGogAkEQakEwaikDADcDACAAQShqIAJBEGpBKGopAwA3AwAgAEEgaiACQRBqQSBqKQMANwMAIABBGGogAkEQakEYaikDADcDACAAQRBqIAJBEGpBEGopAwA3AwAgAEEIaiACQRBqQQhqKQMANwMAIAAgAikDEDcDACAAIAM2AjggAkGAAWokgICAgAAPC0EgQQQQqJCAgAAAC0EcQQQQqJCAgAAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJBhInDgAA2AgAgAkGdg4CAADYCHCACQfCJw4AANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkGEicOAADYCACACQZ2DgIAANgIcIAJByIrDgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQsXACAAKAIAIABBCGooAgAgARCFkYCAAAutAQEBfyOAgICAAEHAAGsiAiSAgICAACAAKAIAIQAgAkEUakEBNgIAIAJBIGpBFGpBATYCACACQgE3AgQgAkGEicOAADYCACACQYGAgIAANgIcIAJCATcCJCACQYiPw4AANgIgIAJB3IOAgAA2AjwgAiAANgI4IAIgAkEYajYCECACIAJBIGo2AhggAiACQThqNgIwIAEgAhDykICAACEAIAJBwABqJICAgIAAIAALDwAgACgCACABEICKgIAAC/sFAQF/I4CAgIAAQTBrIgIkgICAgAACQAJAAkACQAJAAkACQAJAAkAgACgCAA4IAAECAwQFBgcACyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQYSJw4AANgIQIAJB3YOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwHCyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQYSJw4AANgIQIAJB3oOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwGCyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQYSJw4AANgIQIAJB34OAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwFCyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQYSJw4AANgIQIAJB4IOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwECyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQYSJw4AANgIQIAJB4YOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwDCyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQYSJw4AANgIQIAJB4oOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwCCyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQYSJw4AANgIQIAJB44OAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwBCyACIABBBGo2AgwgAkEkakEBNgIAIAJCATcCFCACQYSJw4AANgIQIAJB5IOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAsgAkEwaiSAgICAACAAC4UCAQF/I4CAgIAAQeAAayICJICAgIAAIAAoAgAhACACQQhqQRRqQQE2AgAgAkEoakEUakEENgIAIAJB3ABqQYKAgIAANgIAIAJBwABqQRRqQYKAgIAANgIAIAJBwABqQQxqQYKAgIAANgIAIAJCATcCDCACQYSJw4AANgIIIAJBgYCAgAA2AiQgAkIFNwIsIAJBmI3DgAA2AiggAiAAQRRqNgJYIAIgAEEQajYCUCACIABBDGo2AkggAkHcg4CAADYCRCACIAA2AkAgAiACQSBqNgIYIAIgAkEoajYCICACIAJBwABqNgI4IAEgAkEIahDykICAACEAIAJB4ABqJICAgIAAIAALagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkGEicOAADYCACACQZ2DgIAANgIcIAJBqJDDgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQYSJw4AANgIAIAJBnYOAgAA2AhwgAkGki8OAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQYSJw4AANgIAIAJBgYCAgAA2AhwgAkICNwIkIAJB1IzDgAA2AiAgAkHcg4CAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQYSJw4AANgIAIAJBnYOAgAA2AhwgAkGAjMOAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJBhInDgAA2AgAgAkGdg4CAADYCHCACQaSMw4AANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkGEicOAADYCACACQZ2DgIAANgIcIAJB/I/DgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQYSJw4AANgIAIAJBnYOAgAA2AhwgAkGsisOAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQYSJw4AANgIAIAJBgYCAgAA2AhwgAkICNwIkIAJBnI7DgAA2AiAgAkHcg4CAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQYSJw4AANgIAIAJBnYOAgAA2AhwgAkGQisOAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJBhInDgAA2AgAgAkGdg4CAADYCHCACQdCPw4AANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkGEicOAADYCACACQZ2DgIAANgIcIAJByI7DgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQtqAQF/I4CAgIAAQSBrIgIkgICA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IgsgCkcNAAsLIAcgCGshByAFKAIEIQgLIAAgBzYCCCAAIAg2AgQgACAGNgIAIAVBEGokgICAgAAPCxCpkICAAAALIAcgCBCokICAAAALQcSHw4AAQSNB5IjDgAAQu5CAgAAAC0HEh8OAAEEjQeSIw4AAELuQgIAAAAtBxIfDgABBI0HkiMOAABC7kICAAAALQcSHw4AAQSNB5IjDgAAQu5CAgAAAC0HEh8OAAEEjQeSIw4AAELuQgIAAAAtBxIfDgABBI0HkiMOAABC7kICAAAALQcSHw4AAQSNB5IjDgAAQu5CAgAAAC0HEh8OAAEEjQeSIw4AAELuQgIAAAAtBxIfDgABBI0HkiMOAABC7kICAAAALQcSHw4AAQSNB5IjDgAAQu5CAgAAAC0HEh8OAAEEjQeSIw4AAELuQgIAAAAujAQECfyOAgICAAEEwayICJICAgIAAQQEhAwJAIAFBIhCAkYCAAA0AIAIgATYCBCACQe+DgIAANgIMIAIgADYCCCACIAJBBGo2AhRBASEDIAJBATYCLCACQgE3AhwgAkGEicOAADYCGCACIAJBCGo2AiggAkEUakGsh8OAACACQRhqEMKQgIAADQAgAUEiEICRgIAAIQMLIAJBMGokgICAgAAgAwuvAQEBfyOAgICAAEEgayICJICAgIAAIAIQxo2AgAA6AA8gAkEQaiACQQ9qIAAQvoqAgAACQAJAIAIoAhAiAEUNACACIAIpAhQ3AgQgAiAANgIAIAJBEGogAUGMicOAAEEOEPyQgIAAIAJBEGogAkGcicOAABDekICAABDfkICAACEAIAIoAgQiAUUNASACKAIAIAFBARC3hYCAAAwBC0EBIQALIAJBIGokgICAgAAgAAsZACAAIAFBCGooAgA2AgQgACABKAIANgIACxwAIAAgASkCADcCACAAQQhqIAFBCGooAgA2AgALHAAgACABKQIANwIAIABBCGogAUEIaigCADYCAAuTAQECfyOAgICAAEEQayICJICAgIAAAkACQCABKAIIRQ0AIAAgASkCADcCACAAQQhqIAFBCGooAgA2AgAMAQsgAkEIahCxioCAACACKAIIIQMgAEEIaiACLQAMOgAAIAAgAzYCBCAAQQA2AgAgAUEEaigCACIARQ0AIAEoAgAgAEEBELeFgIAACyACQRBqJICAgIAAC5YDAQV/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IgIgAUEoakEIaigCADYCACABIAEpAyg3A1AgASABQdAAakGAocOAAEGQnsOAABCSjYCAACABKAIEIQMgASgCACEEIAFBOGpBCGoiBSACKAIANgIAIAEgASkDUDcDOAJAQRhBBBC2hYCAACICDQBBGEEEEKiQgIAAAAsgAiAENgIEIAJB2KDDgAA2AgAgAiABKQM4NwIMIAIgAzYCCCACQRRqIAUoAgA2AgAgAEEYaiABQQhqQRhqKAIANgIAIABBEGogAUEIakEQaikDADcCACAAQQhqIAFBCGpBCGopAwA3AgAgACABKQMINwIAIAAgAjYCHCABQeAAaiSAgICAAAv5AgEFfyOAgICAAEHgAGsiASSAgICAACABQQU2AgggASABQQhqNgIkIAFB8YOAgAA2AlQgASABQSRqNgJQIAFBATYCTCABQgE3AjwgAUGkncOAADYCOCABIAFB0ABqNgJIIAFBKGogAUE4ahCtkICAACABQdAAakEIaiICIAFBKGpBCGooAgA2AgAgASABKQMoNwNQIAEgAUHQAGpBgKHDgABBkJ7DgAAQko2AgAAgASgCBCEDIAEoAgAhBCABQThqQQhqIgUgAigCADYCACABIAEpA1A3AzgCQEEYQQQQtoWAgAAiAg0AQRhBBBCokICAAAALIAIgBDYCBCACQdigw4AANgIAIAIgASkDODcCDCACIAM2AgggAkEUaiAFKAIANgIAIABBGGogAUEIakEYaigCADYCACAAQRBqIAFBCGpBEGopAwA3AgAgAEEIaiABQQhqQQhqKQMANwIAIAAgASkDCDcCACAAIAI2AhwgAUHgAGokgICAgAALlwMBBH8jgICAgABB4ABrIgIkgICAgAAgAiABOgAQIAJBCGogAkEQakHUocOAAEGgnsOAABCSjYCAACACKAIMIQMgAigCCCEEIAItABAhAQJAAkBBEEEEELaFgIAAIgVFDQAgBSABOgAMIAVBrKHDgAA2AgAgBSADNgIIIAJBBjYCECACIAJBEGo2AiwgAkHxg4CAADYCRCACIAJBLGo2AkAgAkEBNgJcIAJCATcCTCACQaSdw4AANgJIIAIgAkHAAGo2AlggAkEwaiACQcgAahCtkICAACAFQQA2AgRBHEEEELaFgIAAIgFFDQEgASADNgIIIAEgBDYCBCABQYCiw4AANgIAIAEgAikDMDcCDCABIAU2AhggAUEUaiACQTBqQQhqKAIANgIAIABBGGogAkEQakEYaigCADYCACAAQRBqIAJBEGpBEGopAwA3AgAgAEEIaiACQRBqQQhqKQMANwIAIAAgAikDEDcCACAAIAE2AhwgAkHgAGokgICAgAAPC0EQQQQQqJCAgAAAC0EcQQQQqJCAgAAAC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJBsJDDgAA2AgggAkGBgICAADYCJCACQbCQw4AANgI4IAJCATcCLCACQaSRw4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQsUACAAKAIAIAAoAgQgARCFkYCAAAubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQbCQw4AANgIIIAJBgYCAgAA2AiQgAkGwkMOAADYCOCACQgE3AiwgAkHAkcOAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELFwAgACgCACAAQQhqKAIAIAEQhZGAgAALDwAgACgCACABEK2KgIAAC7kCAQF/I4CAgIAAQTBrIgIkgICAgAACQAJAAkACQCAALQAADgMAAQIACyACIABBAWo2AgwgAkEkakEBNgIAIAJCATcCFCACQbCQw4AANgIQIAJB+IOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwCCyACIABBAWo2AgwgAkEkakEBNgIAIAJCATcCFCACQbCQw4AANgIQIAJB+YOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAwBCyACIABBAWo2AgwgAkEkakEBNgIAIAJCATcCFCACQbCQw4AANgIQIAJB+oOAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAsgAkEwaiSAgICAACAAC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJBsJDDgAA2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BUUNACADKAK8ASAFQQEQt4WAgAALIANB1AFqEJGNgIAACyADQZABaiACIAEQuoqAgAACQCADKAKQASIFQQ9GDQAgAygCtAEhBCADKQKsASEIIAMoAqgBIQYgAykDoAEhCiADKQOYASEJIAMoApQBIQEMAQsCQAJAAkACQCABQQVHDQAgAigCBCIFQQtHDQJBCyEFIAIoAgBBxZLDgABBCxC6kYCAAA0CIANB2AFqIAJBCGpBAhC6ioCAACADQRBqIAJBGGoQu4qAgAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADKALYAQ4QAgMEBQYABwgJCgsMDREBEQELIANB2AFqQQhqKAIAIQUgAygC3AEhBgJAIAMpAxAiCEICUQ0AIAhC/////w+DUA0PCyAFRQ0QIAYgBUEBELeFgIAADBALIANB2AFqQQRyIQUMDAsgA0HYAWpBBHIhBQwLCyADQdgBakEEciEFDAoLIANB2AFqQRhqIQUMCQsgA0HYAWpBBHIhBQwICyADQdgBakEEciEFDAcLIANB6AFqIQUMBgsgA0HoAWohBQwFCyADQegBaiEFDAQLIANB6AFqIQUMAwsgA0HYAWpBGGohBQwCCyADQdgBakEYaiEFDAELIANB2AFqQRhqIQULIAVBBGooAgAiBkUNAiAFKAIAIAZBARC3hYCAAAwCCyADKQMYIQkgA0HkAWooAgAhBiADKQLcASEKQQYhBQwECwJAAkACQCABQQdHDQAgAigCBCIFQQtHDQIgAigCAEH/ksOAAEELELqRgIAADQUgA0HYAWogAkEIakECELqKgIAAIANB8ABqIAJBGGoQu4qAgAAgAykDeCEJIAMpA3AhCCADQeAAaiACQShqELyKgIAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAygC2AEOEAIDBAUGAAcICQoLDA0RAREBCyADQdgBakEIaigCACEFIAMoAtwBIQYCQCAIQgJRDQAgCEL/////D4NCAFINACADKQNgIghCAlENACAIQv////8Pg0IBUQ0PCyAFRQ0QIAYgBUEBELeFgIAADBALIANB2AFqQQRyIQUMDAsgA0HYAWpBBHIhBQwLCyADQdgBakEEciEFDAoLIANB2AFqQRhqIQUMCQsgA0HYAWpBBHIhBQwICyADQdgB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gAAgA0GQAWogA0HYAWoQr5CAgAAgAykClAEhCSADKAKQASEBAkAgAygC3AEiBUUNACADKALYASAFQQEQt4WAgAALQQ4hBQsgACAENgIkIAAgCDcCHCAAIAY2AhggACAKNwMQIAAgCTcCCCAAIAE2AgQgACAFNgIAAkAgAygChAEiAEUNACACIABBA3RBBBC3hYCAAAsgA0GAAmokgICAgAALkwQCA38BfiOAgICAAEHQAGsiAySAgICAAAJAAkAgAkECRg0AIABBDzYCAAwBCwJAAkAgASgCBEEFRw0AIAEoAgBBt5LDgABBBRC6kYCAAEUNAQsgAEEPNgIADAELIANBMGogASgCCCIEIAFBDGooAgAiAkECQYABEK6LgIAAAkACQAJAAkACQAJAIAMoAjBBCEcNAAJAAkAgAg0AQQEhAQwBCyACQX9KIgVFDQIgAiAFELaFgIAAIgFFDQMLIAEgBCACELyRgIAAIQEgA0EcaiACNgIAIANBGGogAjYCACADIAE2AhQMBQsgA0EQakEYaiADQTBqQRhqKQMANwMAIANBEGpBEGogA0EwakEQaikDADcDACADQRBqQQhqIANBMGpBCGopAwA3AwAgAyADKQMwIgY3AxAgBqciAkEIRg0EIABBDzYCAAJAAkACQAJAIAIOBQABAgcDBwsgA0EQakEEciEADAULIANBEGpBBHIhAAwECyADQRBqQQRyIQAMAwsgA0EQakEEciEADAILEKmQgIAAAAsgAiAFEKiQgIAAAAsgAEEEaigCACIARQ0AIAMoAhQgAEEBELeFgIAACyADQSxqEJGNgIAADAELIANBCGogA0EQakEMaigCACICNgIAIAMgAykCFCIGNwMAIABBBTYCACAAIAY3AgQgAEEMaiACNgIACyADQdAAaiSAgICAAAvrAQIBfwJ+I4CAgIAAQSBrIgIkgICAgABCAiEDAkACQCABKAIEQQhHDQAgASgCACkAAELj0IXz5q2ZtvMAUg0AIAIgASgCCCABQQxqKAIAELKKgIAAAkACQAJAAkACQAJAAkAgAigCAA4JAQIDBgQGBgYABgsgAikDCCEEQgAhAwwHCyACQQRyIQEMAwsgAkEEciEBDAILIAJBBHIhAQwBCyACQQRyIQELIAFBBGooAgAiAUUNACACKAIEIAFBARC3hYCAAAsgAkEcahCR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AgwhASAAIAIoAgg2AgAgACABNgIEIAJBEGokgICAgAALCQAgAEEANgIACwkAIABBADYCAAtbAQF/I4CAgIAAQRBrIgIkgICAgAAgAkEIaiABEJyNgIAAIAIgAigCCCACKAIMKAIYEYSAgIAAACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJICAgIAAC1sBAX8jgICAgABBEGsiAiSAgICAACACQQhqIAEQnI2AgAAgAiACKAIIIAIoAgwoAhgRhICAgAAAIAIoAgQhASAAIAIoAgA2AgAgACABNgIEIAJBEGokgICAgAALWwEBfyOAgICAAEEQayICJICAgIAAIAJBCGogARCcjYCAACACIAIoAgggAigCDCgCGBGEgICAAAAgAigCBCEBIAAgAigCADYCACAAIAE2AgQgAkEQaiSAgICAAAtbAQF/I4CAgIAAQRBrIgIkgICAgAAgAkEIaiABEJyNgIAAIAIgAigCCCACKAIMKAIYEYSAgIAAACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJICAgIAACwIACwIACwwAQtvB+suqq7jbIQsNAEKfucqh5u7L7fkACwwAQsPj6vqW96KZaQsNAELw++PryPumns8ACw0AQrPw+6Kz78vh/wALDABCzuDfqLm0m+cTCw0AQoy40u26uvTHlH8LDQBCqZ/Ep5qZh5WGfwsNAELLw+7nvqX3oa9/CwwAQomhztj8k5STEQsXACAAQayVw4AANgIEIAAgAUEMajYCAAsXACAAQeiVw4AANgIEIAAgAUEMajYCAAsXACAAQaSWw4AANgIEIAAgAUEMajYCAAsXACAAQeCWw4AANgIEIAAgAUEMajYCAAsXACAAQZyXw4AANgIEIAAgAUEMajYCAAsXACAAQaSWw4AANgIEIAAgAUEMajYCAAsXACAAQayVw4AANgIEIAAgAUEMajYCAAsXACAAQeiVw4AANgIEIAAgAUEMajYCAAsXACAAQZyXw4AANgIEIAAgAUEMajYCAAsXACAAQeCWw4AANgIEIAAgAUEMajYCAAuGAQEDfwJAIAAoAgQiAUUNACABIABBCGooAgAiAigCABGGgICAAAAgAkEEaigCACIDRQ0AIAEgAyACQQhqKAIAELeFgIAACwJAIAAoAgwNACAAQRRqKAIAIgFFDQAgAEEQaigCACABQQEQt4WAgAALIABBHGoQkY2AgAAgAEEgQQQQt4WAgAALfAEDfwJAIAAoAgQiAUUNACABIABBCGooAgAiAigCABGGgICAAAAgAkEEaigCACIDRQ0AIAEgAyACQQhqKAIAELeFgIAACwJAIABBEGooAgAiAUUNACAAKAIMIAFBARC3hYCAAAsgAEEYahCRjYCAACAAQRxBBBC3hYCAAAtSAQN/AkAgACgCBCIBRQ0AIAEgAEEIaigCACICKAIAEYaAgIAAACACQQRqKAIAIgNFDQAgASADIAJBCGooAgAQt4WAgAALIABBEEEEELeFgIAAC3EBA38CQCAAKAIEIgFFDQAgASAAQQhqKAIAIgIoAgARhoCAgAAAIAJBBGooAgAiA0UNACABIAMgAkEIaigCABC3hYCAAAsCQCAAQRBqKAIAIgFFDQAgACgCDCABQQEQt4WAgAALIABBGEEEELeFgIAACxYAIAAQw4qAgAAgAEEQQQQQt4WAgAALFAAgAEHYl8OAADYCBCAAIAE2AgALFAAgAEGUmMOAADYCBCAAIAE2AgALFAAgAEHQmMOAADYCBCAAIAE2AgALFAAgAEGMmcOAADYCBCAAIAE2AgALFAAgAEHImcOAADYCBCAAIAE2AgALFwAgAEEMakEAIAFCv4i01NKQ+c9nURsLFwAgAEEMakEAIAFC8IyDl4jR840TURsLFwAgAEEMakEAIAFCvMyC2vG9344qURsLFwAgAEEMakEAIAFC19mctLWCjKp+URsLUgEDfwJAIAAoAgQiAkUNACACIABBCGooAgAiAygCABGGgICAAAAgA0EEaigCACIERQ0AIAIgBCADQQhqKAIAELeFgIAACyAAQRBBBBC3hYCAAAtSAQN/AkAgACgCBCICRQ0AIAIgAEEIaigCACIDKAIAEYaAgIAAACADQQRqKAIAIgRFDQAgAiAEIANBCGooAgAQt4WAgAALIABBIEEEELeFgIAAC1IBA38CQCAAKAIEIgJFDQAgAiAAQQhqKAIAIgMoAgARhoCAgAAAIANBBGooAgAiBEUNACACIAQgA0EIaigCABC3hYCAAAsgAEEYQQQQt4WAgAALNQACQCABQvCMg5eI0fONE1ENACAAQRhqKAIAIgAgASAAKAIAKAIQEYmAgIAAAA8LIABBDGoL+gEBBH8CQCABQvCMg5eI0fONE1ENACAAQRhqKAIAIQICQCAAKAIEIgNFDQAgAyAAQQhqKAIAIgQoAgARhoCAgAAAIARBBGooAgAiBUUNACADIAUgBEEIaigCABC3hYCAAAsCQCAAQRBqKAIAIgNFDQAgACgCDCADQQEQt4WAgAALIABBHEEEELeFgIAAIAIgASACKAIAKAIUEYqAgIAAAA8LAkAgACgCBCICRQ0AIAIgAEEIaigCACIDKAIAEYaAgIAAACADQQRqKAIAIgRFDQAgAiAEIANBCGooAgAQt4WAgAALIABBGGoQkY2AgAAgAEEcQQQQt4WAgAALdwEBfyOAgICAAEEQayICJICAgIAAIAIgAUH0mcOAAEEFEPaQgIAAIAIgADYCDCACQfmZw4AAQQMgAkEMakH8mcOAABDKkICAAEGMmsOAAEEGIABBDGpBlJrDgAAQypCAgAAQ3ZCAgAAhACACQRBqJICAgIAAIAALFwAgACgCACAAQQhqKAIAIAEQhZGAgAALSAEBfyOAgICAAEEQayICJICAgIAAIAJBCGogASgCDBCcjYCAACACKAIMIQEgACACKAIINgIAIAAgATYCBCACQRBqJICAgIAACwwAIAAgARCdjYCAAAsMACAAIAEQnY2AgAALDAAgACABEJ2NgIAACwwAIAAgARCdjYCAAAtHAQF/I4CAgIAAQRBrIgIkgICAgAAgAkEIaiAAEJyNgIAAIAIoAgggASACKAIMKAIQEYiAgIAAACEAIAJBEGokgICAgAAgAAtHAQF/I4CAgIAAQRBrIgIkgICAgAAgAkEIaiAAEJyNgIAAIAIoAgggASACKAIMKAIQEYiAgIAAACEAIAJBEGokgICAgAAgAAtHAQF/I4CAgIAAQRBrIgIkgICAgAAgAkEIaiAAEJyNgIAAIAIoAgggASACKAIMKAIQEYiAgIAAACEAIAJBEGokgICAgAAgAAtHAQF/I4CAgIAAQRBrIgIkgICAgAAgAkEIaiAAEJyNgIAAIAIoAgggASACKAIMKAIQEYiAgIAAACEAIAJBEGokgICAgAAgAAsMACAAIAEQt42AgAALFwAgACgCACAAQQhqKAIAIAEQgpGAgAALDAAgACABEOOMgIAACwwAIAAgARCgkYCAAAsXACAAKAIAIABBCGooAgAgARCFkYCAAAsMACAAIAEQ44yAgAALDAAgACABELiNgIAACwwAIAAgARC9kICAAAu4AgMBfwF+A38jgICAgABBgAFrIgMkgICAgAAgA0HgAGogASACEKORgIAAAkACQAJAAkACQAJAIAMtAGANACADKQNoIQQMAQsgAy0AYSEFAkACQCACDQBBASEGDAELIAJBf0oiB0UNBCACIAcQtoWAgAAiBkUNBQsgAyACNgJ0IAMgBjYCcCAGIAEgAhC8kYCAABogAyACNgJ4IANBCGogA0HwAGogBRCziYCAACADLQAIIgJB2wBHDQEgAykDECEECyAAQdsAOgAAIAAgBDcDCAwBCyAAIAMoAAk2AAEgAEEEaiADKAAMNgAAIAMpAxAhBCAAQRBqIANBCGpBEGpByAAQvJGAgAAaIAAgBDcDCCAAIAI6AAALIANBgAFqJICAgIAADwsQqZCAgAAACyACIAcQqJCAgAAAC2YBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJBvJPDgAA2AgAgAkGPgICAADYCHCACIAA2AhggAiACQRhqNgIQIAEgAhDykICAACEAIAJBIGokgICAgAAgAAsXACAAKAIAIABBCGooAgAgARCFkYCAAAtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQaSaw4AANgIAIAJBnYOAgAA2AhwgAkHEnMOAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJBpJrDgAA2AgAgAkGdg4CAADYCHCACQaScw4AANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAEL3gEBAX8jgICAgABBMGsiAiSAgICAAAJAAkAgACgCACIALQAADQAgAiAAQQFqNgIMIAJBJGpBATYCACACQgE3AhQgAkGkmsOAADYCECACQbWEgIAANgIsIAIgAkEoajYCICACIAJBDGo2AiggASACQRBqEPKQgIAAIQAMAQsgAiAAQQFqNgIMIAJBJGpBATYCACACQgE3AhQgAkGkmsOAADYCECACQbaEgIAANgIsIAIgAkEoajYCICACIAJBDGo2AiggASACQRBqEPKQgIAAIQALIAJBMGokgICAgAAgAAsCAAuWAQEBfyOAgICAAEEwayICJICAgIAAIAJBHGpBATYCACACQgE3AgwgAkGkmsOAADYCCCACQZ2DgIAANgIkIAIgAC0AAEECdCIAQcicw4AAaigCADYCLCACIABB2JzDgABqKAIANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQAgAkEwaiSAgICAACAAC6YKAQd/I4CAgIAAQbABayICJICAgIAAAkACQCABQgBSDQAgAEEBOgALDAELIAJByABqIAFCABD5jICAAAJAAkACQAJAAkACQAJAIAItAGhBAkYNACACQQE6AHMgAiACQfMAajYCdCACQbeEgIAANgKkASACIAJB9ABqNgKgASACQQE2ApwBIAJCATcCjAEgAkGkncOAADYCiAEgAiACQaABajYCmAEgAkH4AGogAkGIAWoQrZCAgAAgAkGgAWpBCGoiAyACQfgAakEIaigCADYCACACIAIpA3g3A6ABIAJBCGogAkGgAWpBgKHDgABBkJ7DgAAQko2AgAAgAigCDCEEIAIoAgghBSACQYgBakEIaiIGIAMoAgA2AgAgAiACKQOgATcDiAFBGEEEELaFgIAAIgNFDQEgAyAFNgIEIANB2KDDgAA2AgAgAyACKQOIATcCDCADIAQ2AgggA0EUaiAGKAIANgIAIAItAHMhBAwGCyACQcAAakEEaiIFIAJB0QBqIgYvAAA7AQAgAiACKABNNgJAIAItAEwhBCACKAJIIQMgAi0AUw0FIAIoAlQhByACQThqQQRqIAUvAQAiBTsBACACIAIoAkAiCDYCOCAGIAU7AAAgAiAEOgBMIAIgAzYCSCACIAg2AE0gAiAHNgJUIAJBADoAUyACQRhqIAJByABqEJqMgIAAAkAgAi0AGEHCAEYNACACQcgAakEYaiACQRhqQRhqKQMANwMAIAJByABqQRBqIAJBGGpBEGopAwA3AwAgAkHIAGpBCGogAkEYakEIaikDADcDACACIAIpAxg3A0ggAkEBOgA4IAIgAkE4ajYCQCACQbeEgIAANgKkASACIAJBwABqNgKgASACQQE2ApwBIAJCATcCjAEgAkGkncOAADYCiAEgAiACQaABajYCmAEgAkH4AGogAkGIAWoQrZCAgAAgAkGgAWpBCGoiAyACQfgAakEIaigCADYCACACIAIpA3g3A6ABIAIgAkGgAWpBgKHDgABBkJ7DgAAQko2AgAAgAigCBCEEIAIoAgAhBSACQYgBakEIaiIGIAMoAgA2AgAgAiACKQOgATcDiAFBGEEEELaFgIAAIgNFDQIgAyAFNgIEIANB2KDDgAA2AgAgAyACKQOIATcCDCADIAQ2AgggA0EUaiAGKAIANgIAIAItADghBAJAAkACQAJAAkACQAJAAkACQCACLQBIQX9qDigADQECAw0NDQQNDQ0NDQ0NDQ0NDQ0NDQ0FDQ0NDQ0NDQ0NDQ0GBw0IDQsgAkHIAGpBBHIhBQwLCyACQcgAakEEciEFDAoLIAJByABqQQRyIQUMCQsgAkHIAGpBBHIhBQwICyACQcgAakEEciEFDAcLIAJByABqQQRyIQUMBgsgAkHIAGpBBHIhBQwFCyACQcgAakEEciEFDAQLIAJByABqQQRyIQUMAwsgAkEUaiIFIAJBJWovAAA7AQAgAiACKAAhNgIQIAJBIGotAAAhBCACKAIcIQMgAkEnai0AAA0EIAAgAigCEDYABSAAQQlqIAUvAQA7AAAgAEEAOgALIAAgBDoABCAAIAM2AgAMBgtBGEEEEKiQgIAAAAtBGEEEEKiQgIAAAAsgBUEEaigCACIFRQ0AIAIoAkwgBUEBELeFgIAACyACQeAAahCRjYCAAAsgAEECOgALIAAgAzYCACAAIARBAXE6AAQMAQsgAEECOgALIAAgAzYCACAAIARBAXE6AAQLIAJBsAFqJICAgIAAC8ACAwF/AX4BfyOAgICAAEHQAGsiASSAgICAAEIAIQICQAJAAkAgAC0ACw0AIAFBADoAGyABIAApAgA3AxAgASAAQQdqIgMoAAA2ABcgAUEAOgA7IAEgAygAADYANyABIAApAgA3AzAgAUEgaiABQTBqEJWMgIAAIAFBMGpBCGogAUEgakEIaikDADcDACABIAEpAyA3AzAgASABQTBqEPuMgIAAIAFBCGopAwAiAkIAUw0BIAJQRQ0CIAEpAwAhAgsgAUHQAGokgICAgAAgAg8LIAFBxABqQQE2AgAgAUICNwI0IAFB5JrDgAA2AjAgAUG4hICAADYCTCABIAFByABqNgJAIAEgAUEQajYCSCABQTBqQZCbw4AAELaQgIAAAAtBoJvDgABBFSABQTBqQbibw4AAQcibw4AAENqQgIAAAAscACAAIAEpAgA3AgAgAEEIaiABQQhqKAIANgIAC6QCAQN/I4CAgIAAQTBrIgIkgICAgAAgAC0ACyEDAkBBC0EBELaFgIAAIgRFDQAgBEEHakEAKAD7m8OAADYAACAEQQApAPSbw4AANwAAAkACQCADQf8BcUUNACACQouAgICwATcCJCACIAQ2AiAMAQsgAkEAOgALIAIgACkCADcDACACIABBB2ooAAA2AAcgAkEgaiACEJuMgIAAIARBC0EBELeFgIAACyACQRRqQQE2AgAgAkG5hICAADYCHCACQgI3AgQgAkHkm8OAADYCACACIAJBIGo2AhggAiACQRhqNgIQIAEgAhDykICAACEEAkAgAigCJCIARQ0AIAIoAiAgAEEBELeFgIAACyACQTBqJICAgIAAIAQPC0ELQQEQqJCAgAAACxwAIAAgASkCADcCACAAQQhqIAFBCGooAgA2AgALDAAgACABEJCNgIAACwwAIAAgARCQjYCAAAvDAQEBfwJAAkAgAkUNAAJAAkACQAJAAkAgAUEASA0AIAMoAghFDQIgAygCBCIEDQEgAQ0DIAIhAwwECyAAQQhqQQA2AgAMBQsgAygCACAEIAIgARC4hYCAACEDDAILIAENACACIQMMAQsgASACELaFgIAAIQMLAkAgA0UNACAAIAM2AgQgAEEIaiABNgIAIABBADYCAA8LIAAgATYCBCAAQQhqIAI2AgAMAQsgACABNgIEIABBCGpBADYCAAsgAEEBNgIAC/YBAQN/I4CAgIAAQSBrIgMkgICAgAACQAJAIAEgAmoiAiABSQ0AIABBBGooAgAiAUEBdCIEIAIgBCACSxsiAkEEIAJBBEsbIgJBA3QhBCACQYCAgIABSUECdCEFAkACQCABRQ0AIANBBDYCGCADIAFBA3Q2AhQgAyAAKAIANgIQDAELIANBADYCGAsgAyAEIAUgA0EQahCgi4CAACADKAIEIQECQCADKAIADQAgACABNgIAIABBBGogAjYCAAwCCyADQQhqKAIAIgBBgYCAgHhGDQEgAEUNACABIAAQqJCAgAAACxCpkICAAAALIANBIGokgICAgAAL6AEBAn8jgICAgABBIGsiAySAgICAAAJAAkAgASACaiICIAFJDQAgAEEEaigCACIBQQF0IgQgAiAEIAJLGyICQQggAkEISxsiAkF/c0EfdiEEAkACQCABRQ0AIANBATYCGCADIAE2AhQgAyAAKAIANgIQDAELIANBADYCGAsgAyACIAQgA0EQahCgi4CAACADKAIEIQECQCADKAIADQAgACABNgIAIABBBGogAjYCAAwCCyADQQhqKAIAIgBBgYCAgHhGDQEgAEUNACABIAAQqJCAgAAACxCpkICAAAALIANBIGokgICAgAALPAACQAJAIAEQ9JCAgAANACABEPWQgIAADQEgACABEJuRgIAADwsgACABEKiRgIAADwsgACABEKmRgIAACwIACxAAIABCADcDCCAAQgA3AwALEAAgACACNwMIIAAgATcDAAtzAQF/I4CAgIAAQRBrIgIkgICAgAAgAkEIaiABQeycw4AAQQYQ9pCAgAAgAkEIakHynMOAAEEIIABB/JzDgAAQypCAgABBjJ3DgABBBiAAQQhqQfycw4AAEMqQgIAAEN2QgIAAIQAgAkEQaiSAgICAACAAC4EBAQF/I4CAgIAAQTBrIgIkgICAgAAgAkEsakGPgICAADYCACACQRxqQQI2AgAgAkICNwIMIAJBlJ3DgAA2AgggAkGPgICAADYCJCACIAA2AiAgAiAAQQhqNgIoIAIgAkEgajYCGCABIAJBCGoQ8pCAgAAhACACQTBqJICAgIAAIAALAgALIwEBfwJAIABBBGooAgAiAUUNACAAKAIAIAFBARC3hYCAAAsLYAEDfwJAIAAoAgAiASgCACICRQ0AIAFBBGooAgAiA0UNACACIANBARC3hYCAAAsCQCABQRBqKAIAIgJFDQAgASgCDCACQQR0QQQQt4WAgAALIAAoAgBBGEEEELeFgIAACzUBAX8CQCAAKAIADQAgAEEIaigCACIBRQ0AIAAoAgQgAUEBELeFgIAACyAAQRBqEJGNgIAAC+sDAwh/AX4FfwJAAkAgBUF/aiIHIAEoAhQiCGoiCSADTw0AQQAgASgCCCIKayELIAUgASgCECIMayENIAEoAhwhDiABKQMAIQ8DQAJAAkACQAJAIA8gAiAJajEAAIhCAYNQDQAgCiAKIA4gCiAOSxsgBhsiECAFIBAgBUsbIREgAiAIaiESIBAhCQJAA0ACQCARIAlHDQBBACAOIAYbIRMgCiEJAkACQAJAA0ACQCATIAlJDQAgASAIIAVqIgk2AhQgBkUNAgwOCyAJQX9qIgkg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QRBqKQIANwMAIAJBIGpBCGogAUEIaikCADcDACACIAEpAgA3AyAgAkEYaiACQSBqELCLgIAAAkACQAJAIAIoAhgiAQ0AIABBADYCCCAAQgQ3AgAMAQsgAigCHCEDQSBBBBC2hYCAACIERQ0BIAQgATYCACAEIAM2AgQgAkKEgICAEDcCTCACIAQ2AkggAkHYAGpBIGogAkEgakEgaikDADcDACACQdgAakEYaiACQSBqQRhqKQMANwMAIAJB2ABqQRBqIAJBIGpBEGopAwA3AwAgAkHYAGpBCGogAkEgakEIaikDADcDACACIAIpAyA3A1ggAkEQaiACQdgAahCwi4CAAAJAIAIoAhAiBUUNACACKAIUIQZBDCEDQQEhAQNAAkAgASACKAJMRw0AIAJByABqIAFBARChi4CAACACKAJIIQQLIAQgA2oiByAGNgIAIAdBfGogBTYCACACIAFBAWoiATYCUCADQQhqIQMgAkEIaiACQdgAahCwi4CAACACKAIMIQYgAigCCCIFDQALCyAAIAIpA0g3AgAgAEEIaiACQcgAakEIaigCADYCAAsgAkGAAWokgICAgAAPC0EgQQQQqJCAgAAAC20BAn8CQCAAKAIEIgFFDQAgASAAQQhqIgIoAgAoAgARhoCAgAAAIAIoAgAiAUEEaigCACICRQ0AIAAoAgQgAiABQQhqKAIAELeFgIAACwJAIABBEGooAgAiAUUNACAAKAIMIAFBARC3hYCAAAsLIwEBfwJAIABBBGooAgAiAUUNACAAKAIAIAFBARC3hYCAAAsLFAAgAEEoNgIEIABB6KPDgAA2AgALWwEBfyOAgICAAEEQayICJICAgIAAIAJBCGogARCcjYCAACACIAIoAgggAigCDCgCGBGEgICAAAAgAigCBCEBIAAgAigCADYCACAAIAE2AgQgAkEQaiSAgICAAAsCAAsMAELD4+r6lveimWkLFwAgAEGgpMOAADYCBCAAIAFBDGo2AgALFwAgAEGgpMOAADYCBCAAIAFBDGo2AgALcQEDfwJAIAAoAgQiAUUNACABIABBCGooAgAiAigCABGGgICAAAAgAkEEaigCACIDRQ0AIAEgAyACQQhqKAIAELeFgIAACwJAIABBEGooAgAiAUUNACAAKAIMIAFBARC3hYCAAAsgAEEYQQQQt4WAgAALFAAgAEHcpMOAADYCBCAAIAE2AgALFwAgAEEMakEAIAFC8IyDl4jR840TURsLUgEDfwJAIAAoAgQiAkUNACACIABBCGooAgAiAygCABGGgICAAAAgA0EEaigCACIERQ0AIAIgBCADQQhqKAIAELeFgIAACyAAQRhBBBC3hYCAAAsMACAAIAEQnY2AgAALRwEBfyOAgICAAEEQayICJICAgIAAIAJBCGogABCcjYCAACACKAIIIAEgAigCDCgCEBGIgICAAAAhACACQRBqJICAgIAAIAALnQEBA38jgICAgABBMGsiAiSAgICAAEEAIQMCQANAIAIgACADajYCDCACQQE2AiQgAkEBNgIcIAJBkKXDgAA2AhggAkEBNgIUIAJBiKXDgAA2AhAgAkHthICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACIEDQEgA0EBaiIDQRRHDQALCyACQTBqJICAgIAAIAQLFAAgAEEoNgIEIABBsKXDgAA2AgALCQAgAEEANgIACwIACw0AQrPw+6Kz78vh/wALFwAgACgCACAAQQhqKAIAIAEQgpGAgAALFwAgACgCACAAQQhqKAIAIAEQhZGAgAALmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJB7KjDgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB2KXDgAA2AgAgAkHuhICAADYCHCACQcy1w4AANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJB5KvDgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQbSnw4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkHMp8OAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJBnKrDgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQdCtw4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQdilw4AANgIAIAJB7oSAgAA2AhwgAkG8tsOAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQbS0w4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkGoq8OAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJBzLDDgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQdysw4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkG8rMOAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJBxLPDgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQZCww4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQvNAQEBfyOAgICAAEHQAGsiAiSAgICAACAAKAIAIQAgAkEIakEUakEBNgIAIAJBKGpBFGpBAjYCACACQcwAakHvhICAADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJCAzcCLCACQYC0w4AANgIoIAIgAEEIajYCSCACQe+EgIAANgJEIAIgADYCQCACIAJBIGo2AhggAiACQShqNgIgIAIgAkHAAGo2AjggASACQQhqEPKQgIAAIQAgAkHQAGokgICAgAAgAAubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkG0qsOAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJBkKvDgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQfysw4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQdilw4AANgIAIAJB7oSAgAA2AhwgAkGAtsOAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQcyow4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkH0pcOAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJB4LLDgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQcSrw4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkHYscOAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJBpKnDgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQdilw4AANgIAIAJBgYCAgAA2AhwgAkIBNwIkIAJBzK/DgAA2AiAgAkHwhICAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAsXACAAKAIAIABBCGooAgAgARCFkYCAAAtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQdilw4AANgIAIAJB7oSAgAA2AhwgAkHwtsOAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQdilw4AANgIAIAJBgYCAgAA2AhwgAkIBNwIkIAJB9KbDgAA2AiAgAkHwhICAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAsPACAAKAIAIAEQ5ouAgAAL3y4BAX8jgICAgABBMGsiAiSAgICAAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAAAOQgABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQQALIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkHxhICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADEELIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkHyhICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADEALIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkHzhICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADD8LIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkH0hICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADD4LIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkH1hICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADD0LIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkH2hICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDwLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkH3hICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDsLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkH4hICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDoLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkH5hICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDkLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkH6hICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDgLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkH7hICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDcLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkH8hICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDYLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkH9hICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDULIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkH+hICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDQLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkH/hICAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDMLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGAhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDILIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGBhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDELIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGChYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADDALIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGDhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADC8LIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGEhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADC4LIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGFhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADC0LIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGGhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCwLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGHhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCsLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGIhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCoLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGJhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCkLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGKhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCgLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGLhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCcLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGMhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCYLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGNhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCULIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGOhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCQLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGPhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCMLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGQhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCILIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGRhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCELIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGShYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADCALIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGThYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADB8LIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGUhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADB4LIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGVhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADB0LIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGWhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBwLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGXhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBsLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGYhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBoLIAIgAEEEajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGZhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBkLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGahYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBgLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGbhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBcLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGchYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBYLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGdhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBULIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGehYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBQLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGfhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBMLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGghYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBILIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGhhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBELIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGihYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADBALIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGjhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADA8LIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGkhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADA4LIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGlhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADA0LIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGmhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAwLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGnhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAsLIAIgAEEIajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGohYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAoLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGphYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAkLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGqhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAgLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGrhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAcLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGshYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAYLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGthYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAULIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGuhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAQLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGvhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAMLIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGwhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAILIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGxhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEADAELIAIgAEEBajYCDCACQSRqQQE2AgAgAkIBNwIUIAJB2KXDgAA2AhAgAkGyhYCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEACyACQTBqJICAgIAAIAALrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB2KXDgAA2AgAgAkGBgICAADYCHCACQgE3AiQgAkHkp8OAADYCICACQfCEgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQbCow4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkGUscOAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJBmKjDgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQZStw4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkHsrcOAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB2KXDgAA2AgAgAkGBgICAADYCHCACQgE3AiQgAkHkrsOAADYCICACQfCEgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQdilw4AANgIAIAJBgYCAgAA2AhwgAkIBNwIkIAJB/K7DgAA2AiAgAkHwhICAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkGsssOAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJBoKzDgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQbS1w4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQu6AQEBfyOAgICAAEHQAGsiAiSAgICAACACIAAoAgA2AgwgAkEQakEUakEBNgIAIAJBMGpBFGpBATYCACACQgE3AhQgAkHYpcOAADYCECACQYGAgIAANgIsIAJCATcCNCACQYymw4AANgIwIAJB8oSAgAA2AkwgAiACQShqNgIgIAIgAkEwajYCKCACIAJByABqNgJAIAIgAkEMajYCSCABIAJBEGoQ8pCAgAAhACACQdAAaiSAgICAACAAC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQfCvw4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkGQp8OAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELrQEBAX8jgICAgABBwABrIgIkgICAgAAgACgCACEAIAJBFGpBATYCACACQSBqQRRqQQE2AgAgAkIBNwIEIAJB2KXDgAA2AgAgAkGBgICAADYCHCACQgE3AiQgAkHcpsOAADYCICACQfCEgIAANgI8IAIgADYCOCACIAJBGGo2AhAgAiACQSBqNgIYIAIgAkE4ajYCMCABIAIQ8pCAgAAhACACQcAAaiSAgICAACAAC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQaiww4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkGwr8OAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJBjK7DgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQaiuw4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkH4qcOAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJBtK3DgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB2KXDgAA2AgAgAkHuhICAADYCHCACQZy3w4AANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJBjLLDgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQYCow4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQutAQEBfyOAgICAAEHAAGsiAiSAgICAACAAKAIAIQAgAkEUakEBNgIAIAJBIGpBFGpBATYCACACQgE3AgQgAkHYpcOAADYCACACQYGAgIAANgIcIAJCATcCJCACQbymw4AANgIgIAJB8ISAgAA2AjwgAiAANgI4IAIgAkEYajYCECACIAJBIGo2AhggAiACQThqNgIwIAEgAhDykICAACEAIAJBwABqJICAgIAAIAALmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJBlLPDgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABC60BAQF/I4CAgIAAQcAAayICJICAgIAAIAAoAgAhACACQRRqQQE2AgAgAkEgakEUakEBNgIAIAJCATcCBCACQdilw4AANgIAIAJBgYCAgAA2AhwgAkICNwIkIAJB8LTDgAA2AiAgAkGzhYCAADYCPCACIAA2AjggAiACQRhqNgIQIAIgAkEgajYCGCACIAJBOGo2AjAgASACEPKQgIAAIQAgAkHAAGokgICAgAAgAAtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQdilw4AANgIAIAJB7oSAgAA2AhwgAkHUqcOAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQeyqw4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkGUtcOAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHYpcOAADYCACACQe6EgIAANgIcIAJBwLfDgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkHIrsOAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJBuLHDgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABC5sBAQF/I4CAgIAAQcAAayICJICAgIAAIAJBCGpBFGpBATYCACACQShqQRRqQQA2AgAgAkIBNwIMIAJB2KXDgAA2AgggAkGBgICAADYCJCACQdilw4AANgI4IAJCATcCLCACQaCmw4AANgIoIAIgAkEgajYCGCACIAJBKGo2AiAgASACQQhqEPKQgIAAIQEgAkHAAGokgICAgAAgAQubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkHwsMOAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAELmwEBAX8jgICAgABBwABrIgIkgICAgAAgAkEIakEUakEBNgIAIAJBKGpBFGpBADYCACACQgE3AgwgAkHYpcOAADYCCCACQYGAgIAANgIkIAJB2KXDgAA2AjggAkIBNwIsIAJB8LHDgAA2AiggAiACQSBqNgIYIAIgAkEoajYCICABIAJBCGoQ8pCAgAAhASACQcAAaiSAgICAACABCw8AIABBGGogARCQjYCAAAubAQEBfyOAgICAAEHAAGsiAiSAgICAACACQQhqQRRqQQE2AgAgAkEoakEUakEANgIAIAJCATcCDCACQdilw4AANgIIIAJBgYCAgAA2AiQgAkHYpcOAADYCOCACQgE3AiwgAkGErMOAADYCKCACIAJBIGo2AhggAiACQShqNgIgIAEgAkEIahDykICAACEBIAJBwABqJICAgIAAIAEL5gIBBX8jgICAgABB4ABrIgEkgICAgAAgAUEGOgAIIAEgAUEIajYCJCABQbSFgIAANgJUIAEgAUEkajYCUCABQQE2AkwgAUIBNwI8IAFB9LfDgAA2AjggASABQdAAajYCSCABQShqIAFBOGoQrZCAgAAgAUHQAGpBCGoiAiABQShqQQhqKAIANgIAIAEgASkDKDcDUCABIAFB0ABqQZi5w4AAQeC4w4AAEJKNgIAAIAEoAgQhAyABKAIAIQQgAUE4akEIaiIFIAIoAgA2AgAgASABKQNQNwM4AkBBGEEEELaFgIAAIgINAEEYQQQQqJCAgAAACyACIAQ2AgQgAkHwuMOAADYCACACIAEpAzg3AgwgAiADNgIIIAJBFGogBSgCADYCACAAQRBqIAFBCGpBEGopAwA3AwAgAEEIaiABQQhqQQhqKQMANwMAIAAgASkDCDcDACAAIAI2AhggAUHgAGokgICAgAAL5gIBBX8jgICAgABB4ABrIgEkgICAgAAgAUEUOgAIIAEgAUEIajYCJCABQbSFgIAANgJUIAEgAUEkajYCUCABQQE2AkwgAUIBNwI8IAFB9LfDgAA2AjggASABQdAAajYCSCABQShqIAFBOGoQrZCAgAAgAUHQAGpBCGoiAiABQShqQQhqKAIANgIAIAEgASkDKDcDUCABIAFB0ABqQZi5w4AAQeC4w4AAEJKNgIAAIAEoAgQhAyABKAIAIQQgAUE4akEIaiIFIAIoAgA2AgAgASABKQNQNwM4AkBBGEEEELaFgIAAIgINAEEYQQQQqJCAgAAACyACIAQ2AgQgAkHwuMOAADYCACACIAEpAzg3AgwgAiADNgIIIAJBFGogBSgCADYCACAAQRBqIAFBCGpBEGopAwA3AwAgAEEIaiABQQhqQQhqKQMANwMAIAAgASkDCDcDACAAIAI2AhggAUHgAGokgICAgAAL5gIBBX8jgICAgABB4ABrIgEkgICAgAAgAUEVOgAIIAEgAUEIajYCJCABQbSFgIAANgJUIAEgAUEkajYCUCABQQE2AkwgAUIBNwI8IAFB9LfDgAA2AjggASABQdAAajYCSCABQShqIAFBOGoQrZCAgAAgAUHQAGpBCGoiAiABQShqQQhqKAIANgIAIAEgASkDKDcDUCABIAFB0ABqQZi5w4AAQeC4w4AAEJKNgIAAIAEoAgQhAyABKAIAIQQgAUE4akEIaiIFIAIoAgA2AgAgASABKQNQNwM4AkBBGEEEELaFgIAAIgINAEEYQQQQqJCAgAAACyACIAQ2AgQgAkHwuMOAADYCACACIAEpAzg3AgwgAiADNgIIIAJBFGogBSgCADYCACAAQRBqIAFBCGpBEGopAwA3AwAgAEEIaiABQQhqQQhqKQMANwMAIAAgASkDCDcDACAAIAI2AhggAUHgAGokgICAgAALAgALRgEBfyOAgICAAEEQayICJICAgIAAIAIgADYCDCABQdi3w4AAQQUgAkEMakHIt8OAABD9kICAACEAIAJBEGokgICAgAAgAAtDACAAKAIAIQACQCABEPSQgIAADQACQCABEPWQgIAADQAgACABEJuRgIAADwsgACABEKmRgIAADwsgACABEKiRgIAACxQAIAAoAgAgACgCBCABEIWRgIAACw8AIAAoAgAgARCXkYCAAAtEAQF/I4CAgIAAQRBrIgIkgICAgAAgAkEIaiABQQhqKAIANgIAIAIgASkCADcDACAAIAIQiY2AgAAgAkEQaiSAgICAAAsCAAvkAgMBfwF+An8jgICAgABB0ABrIgMkgICAgAACQAJAAkAgAkH/k+vcA0sNACADIAEgAUI/h0KAlOvcA0IAELuRgIAAIANBEGogAykDACIBIAKtfCIEIANBCGopAwAgBCABVK18EPmMgIAAIAMtADBBAkYNASAAEI+MgIAADAILIAAQjoyAgAAMAQsgA0HAAGpBCGogA0EQakEIaikDADcDACADIAMpAxA3A0ACQCADQcAAahD+jICAAEF/akGPzgBJDQAgABCNjICAAAwBCyADQcAAakEIaiICIANBEGpBCGoiBSkDADcDACADIAMpAxA3A0AgA0HAAGoQ/IyAgAAhBiACIAUpAwA3AwAgAyADKQMQNwNAIANBOGogA0HAAGoQ/YyAgAAgA0HAAGogBiADQThqEIiNgIAAIABBDGogAigCADYCACAAIAMpA0A3AgQgAEHCADoAAAsgA0HQAGokgICAgAALrAEBAX8jgICAgABBIGsiAySAgICAAAJAAkACQCACQX9KDQAgAxCOjICAACADLQAAIgJBwgBHDQEgAygCBCECCyAAIAEgAhCXjICAAAwBCyAAIAMvAAE7AAEgACADKQMINwMIIABBA2ogAy0AAzoAACAAQRBqIANBEGopAwA3AwAgAEEYaiADQRhqKQMANwMAIAAgAygCBDYCBCAAIAI6AAALIANBIGokgICAgAALnwECAn8BfiOAgICAAEEgayICJICAgIAAIAJBEGpBCGoiAyABQQhqKAIANgIAIAIgASkCADcDECACIAJBEGoQiY2AgAAgAyACQQhqIgEpAwA3AwAgAiACKQMANwMQIAJBEGoQ+oyAgAAhBCADIAEpAwA3AwAgAiACKQMANwMQIAAgAkEQahCEjYCAADYCCCAAIAQ3AwAgAkEgaiSAgICAAAuIAgEDfyOAgICAAEEwayICJICAgIAAIAJBIGpBCGoiAyABQQhqKQIANwMAIAIgASkCADcDICACQQhqIAJBIGpBABD3jICAACADIAJBCGpBCGoiASkDADcDACACIAIpAwg3AyACQAJAIAJBIGoQ/oyAgABBf2pBj84ASQ0AIAAQjYyAgAAMAQsg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QRBqKAIAIgFPDQAgACACIAEQsYyAgAAgACgCCCECCyAAKAIAIAJqIAQgARC8kYCAABogACACIAFqNgIIIANBIGokgICAgABBAA8LIAMgAykCDDcDGEHwz8OAAEErIANBGGpBnNDDgABBrNDDgAAQ2pCAgAAAC8MBAQF/AkACQCACRQ0AAkACQAJAAkACQCABQQBIDQAgAygCCEUNAiADKAIEIgQNASABDQMgAiEDDAQLIABBCGpBADYCAAwFCyADKAIAIAQgAiABELiFgIAAIQMMAgsgAQ0AIAIhAwwBCyABIAIQtoWAgAAhAwsCQCADRQ0AIAAgAzYCBCAAQQhqIAE2AgAgAEEANgIADwsgACABNgIEIABBCGogAjYCAAwBCyAAIAE2AgQgAEEIakEANgIACyAAQQE2AgAL7gEBAn8jgICAgABBIGsiAySAgICAAAJAAkAgASACaiICIAFJDQAgAEEEaigCACIBQQF0IgQgAiAEIAJLGyICQQggAkEISxsiAkF/c0EfdiEEAkACQCABRQ0AIAMgACgCADYCECADIAE2AhQgAyABQX9zQR92NgIYDAELIANBADYCGAsgAyACIAQgA0EQahCwjICAACADKAIEIQECQCADKAIADQAgACABNgIAIABBBGogAjYCAAwCCyADQQhqKAIAIgBBgYCAgHhGDQEgAEUNACABIAAQqJCAgAAACxCpkICAAAALIANBIGokgICAgAALDwAgACgCACABELiNgIAACw8AIAAoAgAgARC6jYCAAAsCAAvhCQEDfyOAgICAAEGQAWsiAiSAgICAAAJAAkBBFEEBELaFgIAAIgNFDQAgAEIUNwIEIAAgAzYCACACQSBqQQhqIgMgAUEIaikCADcDACACIAEpAgA3AyAgAkEIaiACQSBqQQAQ94yAgAAgAyACQQhqQQhqIgQpAwA3AwAgAiACKQMINwMgAkACQCACQSBqEISNgIAAIgENACADIAQpAwA3AwAgAiACKQMINwMgIAIgAkEgahD+jICAADYCYCADIAQpAwA3AwAgAiACKQMINwMgIAIgAkEgahD/jICAADoAaSADIAQpAwA3AwAgAiACKQMINwMgIAIgAkEgahCAjYCAADoAaiADIAQpAwA3AwAgAiACKQMINwMgIAIgAkEgahCBjYCAADoAayADIAQpAwA3AwAgAiACKQMINwMgIAIgAkEgahCCjYCAADoAGCACQfAAakEIaiAEKQMANwMAIAIgAikDCDcDcCACQfAAahCDjYCAACEBIAJBzABqQcGFgIAANgIAIAJBxABqQcGFgIAANgIAIAJBPGpBwYWAgAA2AgAgAkE0akHBhYCAADYCACACQSxqQcGFgIAANgIAIAIgAToAHCACQbWCgIAANgIkIAIgAkEcajYCSCACIAJBGGo2AkAgAiACQesAajYCOCACIAJB6gBqNgIwIAIgAkHpAGo2AiggAiACQeAAajYCICACIAA2AmwgAkEGNgKEASACQQY2AnwgAkHU1MOAADYCeCACQQc2AnQgAkGc1MOAADYCcCACIAJBIGo2AoABIAJB7ABqQaDcw4AAIAJB8ABqEMKQgIAADQEMAwtBCSEDAkAgAUEKcA0AQQkhAwNAIANBf2ohAyABQQpuIgFBCnBFDQALCyACIAE2AhggAiADNgIcIAJBIGpBCGoiASACQQhqQQhqIgMpAwA3AwAgAiACKQMINwMgIAIgAkEgahD+jICAADYCYCABIAMpAwA3AwAgAiACKQMINwMgIAIgAkEgahD/jICAADoAZyABIAMpAwA3AwAgAiACKQMINwMgIAIgAkEgahCAjYCAADoAaCABIAMpAwA3AwAgAiACKQMINwMgIAIgAkEgahCBjYCAADoAaSABIAMpAwA3AwAgAiACKQMINwMgIAIgAkEgahCCjYCAADoAaiABIAMpAwA3AwAgAiACKQMINwMgIAIgAkEgahCDjYCAADoAayACIAJBHGoQ7ZCAgAAgAkHUAGpBgoCAgAA2AgAgAkHMAGpBwYWAgAA2AgAgAkHEAGpBwYWAgAA2AgAgAkE8akHBhYCAADYCACACQTRqQcGFgIAANgIAIAJBLGpBwYWAgAA2AgAgAkG1goCAADYCJCACIAIpAwA3A1ggAiACQRhqNgJQIAIgAkHrAGo2AkggAiACQeoAajYCQCACIAJB6QBqNgI4IAIgAkHoAGo2AjAgAiACQecAajYCKCACIAJB4ABqNgIgIAIgADYCbCACQQg2AoQBIAJBBzYCfCACQbzSw4AANgJ4IAJBCDYCdCACQfzRw4AANgJwIAIgAkEgajYCgAEgAkHsAGpBoNzDgAAgAkHwAGoQwpCAgABFDQILQbzQw4AAQSsgAkGIAWpB6NDDgABB5NHDgAAQ2pCAgAAAC0EUQQEQqJCAgAAACyACQZABaiSAgICAAAttAQJ/AkAgACgCBCIBRQ0AIAEgAEEIaiICKAIAKAIAEYaAgIAAACACKAIAIgFBBGooAgAiAkUNACAAKAIEIAIgAUEIaigCABC3hYCAAAsCQCAAQRBqKAIAIgFFDQAgACgCDCABQQEQt4WAgAALC3gBAn8CQCAAKAIEIgFFDQAgASAAQQhqIgIoAgAoAgARhoCAgAAAIAIoAgAiAUEEaigCACICRQ0AIAAoAgQgAiABQQhqKAIAELeFgIAACwJAIABBEGooAgAiAUUNACAAKAIMIAFBARC3hYCAAAsgAEEYahCRjYCAAAsCAAsKACAAEJGNgIAACyMBAX8CQCAAQQRqKAIAIgFFDQAgACgCACABQQEQt4WAgAALCy4BAX8CQCAAQQRqKAIAIgFFDQAgACgCACABQQEQt4WAgAALIABBDGoQkY2AgAALFAAgAEEoNgIEIABBlNbDgAA2AgALWwEBfyOAgICAAEEQayICJICAgIAAIAJBCGogARCcjYCAACACIAIoAgggAigCDCgCGBGEgICAAAAgAigCBCEBIAAgAigCADYCACAAIAE2AgQgAkEQaiSAgICAAAtbAQF/I4CAgIAAQRBrIgIkgICAgAAgAkEIaiABEJyNgIAAIAIgAigCCCACKAIMKAIYEYSAgIAAACACKAIEIQEgACACKAIANgIAIAAgATYCBCACQRBqJICAgIAAC0gBAX8jgICAgABBEGsiAiSAgICAACACQQhqIAEoAgwQnI2AgAAgAigCDCEBIAAgAigCCDYCACAAIAE2AgQgAkEQaiSAgICAAAsJACAAQQA2AgALAgALDQBCs/D7orPvy+H/AAsMAELbwfrLqqu42yELDABCw+Pq+pb3oplpCw0AQsvD7ue+pfehr38LFwAgAEHM1sOAADYCBCAAIAFBDGo2AgALFwAgAEGI18OAADYCBCAAIAFBDGo2AgALFwAgAEHM1sOAADYCBCAAIAFBDGo2AgALFwAgAEGI18OAADYCBCAAIAFBDGo2AgALcQEDfwJAIAAoAgQiAUUNACABIABBCGooAgAiAigCABGGgICAAAAgAkEEaigCACIDRQ0AIAEgAyACQQhqKAIAELeFgIAACwJAIABBEGooAgAiAUUNACAAKAIMIAFBARC3hYCAAAsgAEEYQQQQt4WAgAALfAEDfwJAIAAoAgQiAUUNACABIABBCGooAgAiAigCABGGgICAAAAgAkEEaigCACIDRQ0AIAEgAyACQQhqKAIAELeFgIAACwJAIABBEGooAgAiAUUNACAAKAIMIAFBARC3hYCAAAsgAEEYahCRjYCAACAAQRxBBBC3hYCAAAsUACAAQcTXw4AANgIEIAAgATYCAAsUACAAQYDYw4AANgIEIAAgATYCAAsXACAAQQxqQQAgAULwjIOXiNHzjRNRGwtSAQN/AkAgACgCBCICRQ0AIAIgAEEIaigCACIDKAIAEYaAgIAAACADQQRqKAIAIgRFDQAgAiAEIANBCGooAgAQt4WAgAALIABBGEEEELeFgIAACzUAAkAgAULwjIOXiNHzjRNRDQAgAEEYaigCACIAIAEgACgCACgCEBGJgICAAAAPCyAAQQxqC/oBAQR/AkAgAULwjIOXiNHzjRNRDQAgAEEYaigCACECAkAgACgCBCIDRQ0AIAMgAEEIaigCACIEKAIAEYaAgIAAACAEQQRqKAIAIgVFDQAgAyAFIARBCGooAgAQt4WAgAALAkAgAEEQaigCACIDRQ0AIAAoAgwgA0EBELeFgIAACyAAQRxBBBC3hYCAACACIAEgAigCACgCFBGKgICAAAAPCwJAIAAoAgQiAkUNACACIABBCGooAgAiAygCABGGgICAAAAgA0EEaigCACIERQ0AIAIgBCADQQhqKAIAELeFgIAACyAAQRhqEJGNgIAAIABBHEEEELeFgIAAC3cBAX8jgICAgABBEGsiAiSAgICAACACIAFBrNjDgABBBRD2kICAACACIAA2AgwgAkGx2MOAAEEDIAJBDGpBtNjDgAAQypCAgABBxNjDgABBBiAAQQxqQczYw4AAEMqQgIAAEN2QgIAAIQAgAkEQaiSAgICAACAACxcAIAAoAgAgAEEIaigCACABEIWRgIAAC0gBAX8jgICAgABBEGsiAiSAgICAACACQQhqIAEoAgwQnI2AgAAgAigCDCEBIAAgAigCCDYCACAAIAE2AgQgAkEQaiSAgICAAAsMACAAIAEQnY2AgAALDAAgACABEJ2NgIAAC0cBAX8jgICAgABBEGsiAiSAgICAACACQQhqIAAQnI2AgAAgAigCCCABIAIoAgwoAhARiICAgAAAIQAgAkEQaiSAgICAACAAC0cBAX8jgICAgABBEGsiAiSAgICAACACQQhqIAAQnI2AgAAgAigCCCABIAIoAgwoAhARiICAgAAAIQAgAkEQaiSAgICAACAACxcAIAAoAgAgAEEIaigCACABEIKRgIAACxcAIAAoAgAgAEEIaigCACABEIWRgIAACyMBAX8CQCAAQQRqKAIAIgFFDQAgACgCACABQQEQt4WAgAALC9MBAQF/I4CAgIAAQdAAayICJICAgIAAIAAoAgAhACACQeyFgIAANgI0IAIgADYCMCACQQE2AkwgAkIBNwI8IAJB/NrDgAA2AjggAiACQTBqNgJIIAJBIGogAkE4ahCtkICAACACQRRqQQE2AgAgAkHshYCAADYCHCACQgE3AgQgAkHE2sOAADYCACACIAJBIGo2AhggAiACQRhqNgIQIAEgAhDykICAACEAAkAgAigCJCIBRQ0AIAIoAiAgAUEBELeFgIAACyACQdAAaiSAgICAACAACxcAIAAoAgAgAEEIaigCACABEIWRgIAAC2oBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJBxNrDgAA2AgAgAkHthYCAADYCHCACQfjbw4AANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhASACQSBqJICAgIAAIAELagEBfyOAgICAAEEgayICJICAgIAAIAJBFGpBATYCACACQgE3AgQgAkHE2sOAADYCACACQe2FgIAANgIcIAJBqNvDgAA2AhggAiACQRhqNgIQIAEgAhDykICAACEBIAJBIGokgICAgAAgAQtqAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQcTaw4AANgIAIAJB7YWAgAA2AhwgAkHU28OAADYCGCACIAJBGGo2AhAgASACEPKQgIAAIQEgAkEgaiSAgICAACABCw8AIAAoAgAgARDijICAAAuTAwEBfyOAgICAAEEwayICJICAgIAAAkACQAJAAkACQCAAKAIADgQAAQIDAAsgAiAAQQRqNgIMIAJBJGpBATYCACACQgE3AhQgAkHE2sOAADYCECACQe6FgIAANgIsIAIgAkEoajYCICACIAJBDGo2AiggASACQRBqEPKQgIAAIQAMAwsgAiAAQQRqNgIMIAJBJGpBATYCACACQgE3AhQgAkHE2sOAADYCECACQe+FgIAANgIsIAIgAkEoajYCICACIAJBDGo2AiggASACQRBqEPKQgIAAIQAMAgsgAiAAQQRqNgIMIAJBJGpBATYCACACQgE3AhQgAkHE2sOAADYCECACQfCFgIAANgIsIAIgAkEoajYCICACIAJBDGo2AiggASACQRBqEPKQgIAAIQAMAQsgAiAAQQRqNgIMIAJBJGpBATYCACACQgE3AhQgAkHE2sOAADYCECACQfGFgIAANgIsIAIgAkEoajYCICACIAJBDGo2AiggASACQRBqEPKQgIAAIQALIAJBMGokgICAgAAgAAsPACAAQRBqIAEQkI2AgAAL8AIBBH8jgICAgABB4ABrIgIkgICAgAAgAkEcaiABQQhqKAIANgIAIAJBADYCECACIAEpAgA3AhQgAiACQRBqNgIkIAJB8oWAgAA2AlQgAiACQSRqNgJQIAJBATYCTCACQgE3AjwgAkHc2MOAADYCOCACIAJB0ABqNgJIIAJBKGogAkE4ahCtkICAACACQdAAakEIaiIBIAJBKGpBCGooAgA2AgAgAiACKQMoNwNQIAJBCGogAkHQAGpBgNrDgABByNnDgAAQko2AgAAgAigCDCEDIAIoAgghBCACQThqQQhqIgUgASgCADYCACACIAIpA1A3AzgCQEEYQQQQtoWAgAAiAQ0AQRhBBBCokICAAAALIAEgBDYCBCABQdjZw4AANgIAIAEgAikDODcCDCABIAM2AgggAUEUaiAFKAIANgIAIABBCGogAkEQakEIaikDADcCACAAIAIpAxA3AgAgACABNgIQIAJB4ABqJICAgIAAC5wCAQN/I4CAgIAAQdAAayIDJICAgIAAIAEgAhDvjICAACEBIANBATYCCCADIANBCGo2AhwgA0HyhYCAADYCNCADIANBHGo2AjAgA0EBNgJMIANCATcCPCADQdzYw4AANgI4IAMgA0EwajYCSCADQSBqIANBOGoQrZCAgAAgASgCBCEEIAFBADYCBCABQQhqKAIAIQUCQEEcQQQQtoWAgAAiAg0AQRxBBBCokICAAAALIAIgBTYCCCACIAQ2AgQgAkGs2sOAADYCACACIAMpAyA3AgwgAiABNgIYIAJBFGogA0EgakEIaigCADYCACAAQQhqIANBCGpBCGopAwA3AgAgACADKQMINwIAIAAgAjYCECADQdAAaiSAgICAAAuaAgEEfyOAgICAAEHQAGsiAiSAgICAACABEPCMgIAAIQMgAkECNgIIIAIgAkEIajYCHCACQfKFgIAANgI0IAIgAkEcajYCMCACQQE2AkwgAkIBNwI8IAJB3NjDgAA2AjggAiACQTBqNgJIIAJBIGogAkE4ahCtkICAACADKAIEIQQgA0EANgIEIANBCGooAgAhBQJAQRxBBBC2hYCAACIBDQBBHEEEEKiQgIAAAAsgASAFNgIIIAEgBDYCBCABQazaw4AANgIAIAEgAikDIDcCDCABIAM2AhggAUEUaiACQSBqQQhqKAIANgIAIABBCGogAkEIakEIaikDADcCACAAIAIpAwg3AgAgACABNgIQIAJB0ABqJICAgIAACwIAC40CAQF/I4CAgIAAQRBrIgIkgICAgAAgACgCACEAIAJBADYCDAJAAkAgAUGAAUkNAAJAIAFBgBBJDQACQCABQYCABEkNACACIAFBP3FBgAFyOgAPIAIgAUEGdkE/cUGAAXI6AA4gAiABQQx2QT9xQYABcjoADSACIAFBEnZBB3FB8AFyOgAMQQQhAQwDCyACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDIQEMAgsgAiABQT9xQYABcjoADSACIAFBBnZBwAFyOgAMQQIhAQwBCyACIAE6AAxBASEBCyAAIAJBDGogARCqjYCAACEBIAJBEGokgICAgAAgAQt0AQF/I4CAgIAAQSBrIgIkgICAgAAgAiAAKAIANgIEIAJBCGpBEGogAUEQaikCADcDACACQQhqQQhqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBgNzDgAAgAkEIahDCkICAACEBIAJBIGokgICAgAAgAQsRACAAKAIAIAEgAhCqjYCAAAujAQECfyOAgICAAEEwayICJICAgIAAQQEhAwJAIAFBIhCAkYCAAA0AIAIgATYCBCACQfOFgIAANgIMIAIgADYCCCACIAJBBGo2AhRBASEDIAJBATYCLCACQgE3AhwgAkGY3MOAADYCGCACIAJBCGo2AiggAkEUakGA3MOAACACQRhqEMKQgIAADQAgAUEiEICRgIAAIQMLIAJBMGokgICAgAAgAwvDAQEBfwJAAkAgAkUNAAJAAkACQAJAAkAgAUEASA0AIAMoAghFDQIgAygCBCIEDQEgAQ0DIAIhAwwECyAAQQhqQQA2AgAMBQsgAygCACAEIAIgARC4hYCAACEDDAILIAENACACIQMMAQsgASACELaFgIAAIQMLAkAgA0UNACAAIAM2AgQgAEEIaiABNgIAIABBADYCAA8LIAAgATYCBCAAQQhqIAI2AgAMAQsgACABNgIEIABBCGpBADYCAAsgAEEBNgIAC+YBAQN/I4CAgIAAQSBrIgIkgICAgAACQAJAIAFBAWoiAUUNACAAQQRqKAIAIgNBAXQiBCABIAQgAUsbIgFBCCABQQhLGyIBQX9zQR92IQQCQAJAIANFDQAgAkEBNgIYIAIgAzYCFCACIAAoAgA2AhAMAQsgAkEANgIYCyACIAEgBCACQRBqEOyMgIAAIAIoAgQhAwJAIAIoAgANACAAIAM2AgAgAEEEaiABNgIADAILIAJBCGooAgAiAEGBgICAeEYNASAARQ0AIAMgABCokICAAAALEKmQgIAAAAsgAkEgaiSAgICAAAvoAQECfyOAgICAAEEgayIDJICAgIAAAkACQCABIAJqIgIgAUkNACAAQQRqKAIAIgFBAXQiBCACIAQgAksbIgJBCCACQQhLGyICQX9zQR92IQQCQAJAIAFFDQAgA0EBNgIYIAMgATYCFCADIAAoAgA2AhAMAQsgA0EANgIYCyADIAIgBCADQRBqEOyMgIAAIAMoAgQhAQJAIAMoAgANACAAIAE2AgAgAEEEaiACNgIADAILIANBCGooAgAiAEGBgICAeEYNASAARQ0AIAEgABCokICAAAALEKmQgIAAAAsgA0EgaiSAgICAAAu4AgEDfyOAgICAAEHQAGsiAiSAgICAACACIAE2AgwgAiAANgIIIAIgAkEIajYCFCACQfiFgIAANgJEIAIgAkEUajYCQCACQQE2AjwgAkIBNwIsIAJB3NjDgAA2AiggAiACQcAAajYCOCACQRhqIAJBKGoQrZCAgAAgAkHAAGpBCGoiASACQRhqQQhqKAIANgIAIAIgAikDGDcDQCACIAJBwABqQYDaw4AAQcjZw4AAEJKNgIAAIAIoAgQhACACKAIAIQMgAkEoakEIaiIEIAEoAgA2AgAgAiACKQNANwMoAkBBGEEEELaFgIAAIgENAEEYQQQQqJCAgAAACyABIAM2AgQgAUHY2cOAADYCACABIAIpAyg3AgwgASAANgIIIAFBFGogBCgCADYCACACQdAAaiSAgICAACABC5IDAQR/I4CAgIAAQdAAayIBJICAgIAAIAEgADYCECABIAFBEGo2AhQgAUH5hYCAADYCRCABIAFBFGo2AkAgAUEBNgI8IAFCATcCLCABQdzYw4AANgIoIAEgAUHAAGo2AjggAUEYaiABQShqEK2QgIAAIAFBwABqQQhqIgAgAUEYakEIaigCADYCACABIAEpAxg3A0AgAUEIaiABQcAAakGA2sOAAEHI2cOAABCSjYCAACABKAIMIQIgASgCCCEDIAFBKGpBCGoiBCAAKAIANgIAIAEgASkDQDcDKAJAQRhBBBC2hYCAACIARQ0AIAAgAzYCBCAAQdjZw4AANgIAIAAgASkDKDcCDCAAIAI2AgggAEEUaiAEKAIANgIAAkAgASgCECICKAIAIgNFDQAgAkEEaigCACIERQ0AIAMgBEEBELeFgIAACwJAIAJBEGooAgAiA0UNACACKAIMIANBBHRBBBC3hYCAAAsgASgCEEEYQQQQt4WAgAAgAUHQAGokgICAgAAgAA8LQRhBBBCokICAAAALHAAgACgCACIAKAIAIABBCGooAgAgARCFkYCAAAsUACAAKAIAIAAoAgQgARCFkYCAAAsCAAv5AgECfyOAgICAAEEQayICJICAgIAAIAAoAgAhAAJAAkACQAJAIAFBgAFJDQAgAkEANgIMIAFBgBBPDQEgAiABQT9xQYABcjoADSACIAFBBnZBwAFyOgAMQQIhAQwCCwJAIAAoAggiAyAAKAIERw0AIAAgAxDtjICAACAAKAIIIQMLIAAoAgAgA2ogAToAACAAIAAoAghBAWo2AggMAgsCQCABQYCABEkNACACIAFBP3FBgAFyOgAPIAIgAUEGdkE/cUGAAXI6AA4gAiABQQx2QT9xQYABcjoADSACIAFBEnZBB3FB8AFyOgAMQQQhAQwBCyACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDIQELAkAgACgCBCAAKAIIIgNrIAFPDQAgACADIAEQ7oyAgAAgACgCCCEDCyAAKAIAIANqIAJBDGogARC8kYCAABogACADIAFqNgIICyACQRBqJICAgIAAQQALdAEB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AkACQAJAAkACQAJAAkACQAJAAkAgAUH/A3EiAiABQQl1EIyNgIAAQRZsIgNB8t3DgABqLwEAIgRLDQAgAiADQfDdw4AAai8BACIEQf//A3FLDQEgAiADQe7dw4AAai8BACIEQf//A3FLDQIgAiADQezdw4AAai8BACIEQf//A3FLDQMgAiADQerdw4AAai8BACIEQf//A3FLDQQgAiADQejdw4AAai8BACIEQf//A3FLDQUgAiADQebdw4AAai8BACIEQf//A3FLDQYgAiADQeTdw4AAai8BACIEQf//A3FLDQcgAiADQeLdw4AAai8BACIEQf//A3FLDQggAiADQeDdw4AAai8BACIEQf//A3FLDQkgAiADQd7dw4AAai8BACIDQf//A3FLDQpBASECDAsLIAEgBGshAUEMIQIMCgsgASAEayEBQQshAgwJCyABIARrIQFBCiECDAgLIAEgBGshAUEJIQIMBwsgASAEayEBQQghAgwGCyABIARrIQFBByECDAULIAEgBGshAUEGIQIMBAsgASAEayEBQQUhAgwDCyABIARrIQFBBCECDAILIAEgBGshAUEDIQIMAQsgASADayEBQQIhAgsgACABOgABIAAgAjoAAAukAgEBfyOAgICAAEHgAGsiAiSAgICAACACIAAoAgAiAEEJdTYCVCACQRBqIAAQho2AgAAgAiACLQAQOgBaIAJBCGogABCGjYCAACACIAItAAk6AFsgAiAAQR92QQRyNgJcIAIgAkHcAGoQ7ZCAgAAgAkEwakEUakHBhYCAADYCACACQTBqQQxqQcGFgIAANgIAIAJBGGpBFGpBBDYCACACQRhqQQxqQQM2AgAgAkG1goCAADYCNCACQaTew4AANgIgIAJBAzYCHCACQYzew4AANgIYIAIgAikDADcDSCACIAJB2wBqNgJAIAIgAkHaAGo2AjggAiACQdQAajYCMCACIAJBMGo2AiggASACQRhqEPKQgIAAIQAgAkHgAGokgICAgAAgAAsTACAAIAE2AgAgACACKQIANwIECy0AIABBADsBDCAAQQ5qQQA6AAAgACABKQIANwIAIABBCGogAUEIaigCADYCAAuBAQEBfyOAgICAAEEwayICJICAgIAAIAJBLGpB/oWAgAA2AgAgAkEcakECNgIAIAJCAjcCDCACQYjfw4AANgIIIAJB/4WAgAA2AiQgAiAANgIgIAIgAEEEajYCKCACIAJBIGo2AhggASACQQhqEPKQgIAAIQAgAkEwaiSAgICAACAAC6YDAQR/I4CAgIAAQdAAayICJICAgIAAQQkhAwJAAkAgACgCACIEIARBCm4iBUEKbGtFDQAgBCEFDAELQQghAyAFQQpwDQBBByEDIARB5ABuIgVBCnANAEEGIQMgBEHoB24iBUEKcA0AQQUhAyAEQZDOAG4iBUEKcA0AQQQhAyAEQaCNBm4iBUEKcA0AQQMhAyAEQcCEPW4iBUEKcA0AQQIhAyAEQYCt4gRuIgVBCnANACAEQYDC1y9uIQVBASEDCyACIAU2AgggAiADNgIMIAIgAkEMahDtkICAACACQcQAakGCgICAADYCACACQShqQRRqQcGFgIAANgIAIAJBKGpBDGpBwYWAgAA2AgAgAkEQakEUakEFNgIAIAJBEGpBDGpBBDYCACACIABBBmo2AjggAiAAQQVqNgIwIAJBwYWAgAA2AiwgAiAAQQRqNgIoIAJBvN/DgAA2AhggAkEENgIUIAJBnN/DgAA2AhAgAiACKQMANwNIIAIgAkEIajYCQCACIAJBKGo2AiAgASACQRBqEPKQgIAAIQAgAkHQAGokgICAgAAgAAslAQF/QQAhAQJAIABBA3ENACAAQRlvQQBHIABBD3FFciEBCyABCzABAX9B7QIhAQJAIABBA3ENAEHuAkHtAiAAQRlvQQBHIABBD3FFckEBcRshAQsgAQsNAEKl8KOUysfoiJl/CwIAC6ABAQN/I4CAgIAAQRBrIgIkgICAgAACQAJAIAAoAgAiACgCBCIDRQ0AIABBCGooAgAhBCACQQhqIAAgACgCACgCBBGEgICAAAAgAyACKAIIIAIoAgwgASAEKAIYEYuAgIAAACEADAELIAIgACAAKAIAKAIEEYSAgIAAACACKAIAIAEgAigCBCgCDBGIgICAAAAhAAsgAkEQaiSAgICAACAACxgAIAAoAgAiACAAKAIAKAIAEYaAgIAAAAuKAQEBfyOAgICAAEEQayIEJICAgIAAAkBBACgCuOHEgABBAkYNAEG44cSAABCojYCAAAsgBEEIakEAKAK84cSAACABIAJBACgCwOHEgAAoAhQRgICAgAAAIAQoAggiAiADIAQoAgwiASgCIBGEgICAAAAgACABNgIEIAAgAjYCACAEQRBqJICAgIAAC4oDAQV/I4CAgIAAQcAAayIEJICAgIAAIAQgAjYCFCAEIAE2AhBBASEFIARBNGpBATYCACAEQgE3AiQgBEG84MOAADYCICAEQYCGgIAANgI8IAQgBEE4ajYCMCAEIARBEGo2AjgCQCADIARBIGoQ8pCAgAANAEEAIQUgAxDzkICAAEUNAEEAIQUgBCgCFCEBIAQoAhAhAkEBIQYDQAJAAkAgBUEBcUUNACACDQFBACEFDAMLQQAhBQNAIAJFDQMgBEEIaiACIAEoAhgRhICAgAAAIAQoAgwhASAEKAIIIQIgBkF/aiIGDQALIAJFDQILIAQgAiABKAIYEYSAgIAAACAEKAIEIQcgBCgCACEIIAQgATYCHCAEIAI2AhggBEEBNgI0IARCATcCJCAEQcjgw4AANgIgIARBgIaAgAA2AjwgBCAEQThqNgIwIAQgBEEYajYCOAJAIAMgBEEgahDykICAAA0AQQAhBkEBIQUgCCECIAchAQwBCwtBASEFCyAEQcAAaiSAgICAACAFC/wHAQZ/I4CAgIAAQfAAayIEJICAgIAAIAQgAjYCJCAEIAE2AiACQAJAAkACQCADEPOQgIAADQBBASEFIARB7ABqQQE2AgAgBEIBNwJcIARBvODDgAA2AlggBEGAhoCAADYCNCAEIARBMGo2AmggBCAEQSBqNgIwIAMgBEHYAGoQ8pCAgAANAyAEQRhqIAQoAiAgBCgCJCgCGBGEgICAAAAgBCgCGCICRQ0CIAQoAhwhASAEQewAakEANgIAIARBvODDgAA2AmggBEIBNwJcIARBjOHDgAA2AlggAyAEQdgAahDykICAAA0DIARBEGogAiABKAIYEYSAgIAAACAEKAIQRQ0BQQAhBgNAIARBCGogAiABKAIYEYSAgIAAACAEKAIMIQcgBCgCCCEIIAQgATYCLCAEIAI2AiggBEEANgJsIARBvODDgAA2AmggBEIBNwJcIARBmOHDgAA2AlggAyAEQdgAahDykICAAA0EIAQgBjYCOCAEQQE2AjQgBCADNgIwIAQgCUGAfnFBAXIiCTYCQCAEQYCGgIAANgJMIAQgBEEoajYCSCAEIARBMGo2AlQgBEEBNgJsIARCATcCXCAEQbzgw4AANgJYIAQgBEHIAGo2AmggBEHUAGpBtOHDgAAgBEHYAGoQwpCAgAANBCAGQQFqIQYgCCECIAchASAIDQAMAwsLIAEgAyACKAIMEYiAgIAAACEFDAILA0AgBCACIAEoAhgRhICAgAAAIAQoAgQhCCAEKAIAIQYgBCABNgIsIAQgAjYCKCAEQQA2AmwgBEG84MOAADYCaCAEQgE3AlwgBEGY4cOAADYCWCADIARB2ABqEPKQgIAADQIgBEEBOgBAIAQgAzYCMCAEQQQ2AjwgBEHs4cOAADYCOCAEQQA2AjQgBEGAhoCAADYCTCAEIARBKGo2AkggBCAEQTBqNgJUIARBATYCbCAEQgE3AlwgBEG84MOAADYCWCAEIARByABqNgJoIARB1ABqQbThw4AAIARB2ABqEMKQgIAADQIgBiECIAghASAGDQALCwJAIAAoAgAiAg0AQQAhBQwBCyAEIAI2AlQgBEHsAGpBADYCACAEQbzgw4AANgJoIARCATcCXCAEQazhw4AANgJYIAMgBEHYAGoQ8pCAgAANACAEQTxqQQQ2AgAgBEE4akHs4cOAADYCACAEQQE6AEAgBCADNgIwIARBADYCNCAEQYGGgIAANgJMIAQgBEHUAGo2AkggBCAEQTBqNgIoIARBATYCbCAEQgE3AlwgBEG84MOAADYCWCAEIARByABqNgJoIARBKGpBtOHDgAAgBEHYAGoQwpCAgAANAEEAIQULIARB8ABqJICAgIAAIAULCQAgACABNgIACxQAIAAoAgAgACgCBCABEIWRgIAACw8AIAAoAgAgARCAkYCAAAtoAQF/I4CAgIAAQSBrIgIkgICAgAAgACgCACEAIAJBCGpBEGogAUEQaikCADcDACACQQhqQQhqIAFBCGopAgA3AwAgAiABKQIANwMIIAAgAkEIahDykICAACEBIAJBIGokgICAgAAgAQsRACAAKAIAIAEgAhDxkICAAAsYACAAKAIAIAEgACgCBCgCEBGIgICAAAALDwAgACgCACABEM2QgIAAC04BAX8jgICAgABBEGsiAiSAgICAACACQQhqIAEgASgCACgCBBGEgICAAAAgAigCDCEBIAAgAigCCDYCACAAIAE2AgQgAkEQaiSAgICAAAubAQEDfyOAgICAAEEQayICJICAgIAAAkACQCAAKAIEIgNFDQAgAEEIaigCACEEIAJBCGogACAAKAIAKAIEEYSAgIAAACADIAIoAgggAigCDCABIAQoAhgRi4CAgAAAIQAMAQsgAiAAIAAoAgAoAgQRhICAgAAAIAIoAgAgASACKAIEKAIMEYiAgIAAACEACyACQRBqJICAgIAAIAALAgALjQIBAX8jgICAgABBEGsiAiSAgICAACAAKAIAIQAgAkEANgIMAkACQCABQYABSQ0AAkAgAUGAEEkNAAJAIAFBgIAESQ0AIAIgAUE/cUGAAXI6AA8gAiABQQZ2QT9xQYABcjoADiACIAFBDHZBP3FBgAFyOgANIAIgAUESdkEHcUHwAXI6AAxBBCEBDAMLIAIgAUE/cUGAAXI6AA4gAiABQQx2QeABcjoADCACIAFBBnZBP3FBgAFyOgANQQMhAQwCCyACIAFBP3FBgAFyOgANIAIgAUEGdkHAAXI6AAxBAiEBDAELIAIgAToADEEBIQELIAAgAkEMaiABEKCNgIAAIQEgAkEQaiSAgICAACABC9sEAQt/I4CAgIAAQeAAayIDJICAgIAAIANBAToALCADQQo2AiggA0KKgICAEDcDICADIAI2AhwgAyACNgIUIAMgATYCECADIAI2AgwgAEEEaiEEIAMtAC0hBSADKAIIIQZBACEHQQAhCEEAIQkCQANAAkACQCAJIAJLDQADQCABIAlqIQoCQAJAIAIgCWsiC0EISQ0AIANBCiAKIAsQyJCAgAAgAygCBCEMIAMoAgAhCgwBC0EAIQwCQCALDQBBACEKDAELA0ACQCAKIAxqLQAAQQpHDQBBASEKDAILIAsgDEEBaiIMRw0AC0EAIQogCyEMCwJAIApBAUYNAEEBIQVBACEKIAghDSACIQkgAiEMDAMLAkAgDCAJaiIMQQFqIglFDQAgCSACSw0AIAEgDGotAABBCkcNAEEBIQogCSEGIAkhDQwDCyAJIAJNDQALC0EBIQVBACEKIAghDSACIQwLIAMgDCAIayIMNgI8IAMgASAIajYCOCAHQQFqIQsCQAJAAkACQAJAIAcNACAALQAQDQEMAgsgACgCAEEKEICRgIAADQIgAEEBOgAQIAMoAjwhDAsgDEUNAiAEIAcgAEHM4cOAABCtjYCAAA0BIABBADoAEAsgACgCACEMIANBATYCVCADQgE3AkQgA0Hk4cOAADYCQCADQYeGgIAANgJcIAMgA0HYAGo2AlAgAyADQThqNgJYIAwgA0HAAGoQ8pCAgABFDQELIAMgBToALSADIAY2AghBASEMDAILIAshByANIQggCg0AC0EAIQwLIANB4ABqJICAgIAAIAwLdAEBfyOAgICAAEEgayICJICAgIAAIAIgACgCADYCBCACQQhqQRBqIAFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQbThw4AAIAJBCGoQwpCAgAAhASACQSBqJICAgIAAIAELEQAgACgCACABIAIQoI2AgAALOQEBfwJAQQRBBBC2hYCAACIEDQBBBEEEEKiQgIAAAAsgBEEANgIAIABB3ODDgAA2AgQgACAENgIACzkBAX8CQEEEQQQQtoWAgAAiBA0AQQRBBBCokICAAAALIARBADYCACAAQdzgw4AANgIEIAAgBDYCAAt7AQN/IABBBGooAgAhASAAKAIAQQA6AAACQCABKAIAIgAoAgAiAkUNACACIAAoAgQoAgARhoCAgAAAIAAoAgQiAkEEaigCACIDRQ0AIAAoAgAgAyACQQhqKAIAELeFgIAACyABKAIAIgBBhOLDgAA2AgQgAEEBNgIAQQELOQEBfwJAQQRBBBC2hYCAACIEDQBBBEEEEKiQgIAAAAsgBEEANgIAIABB3ODDgAA2AgQgACAENgIACwIAC2IBAX8jgICAgABBIGsiASSAgICAACABQQE6AAMgASAAQQRqNgIEIAEgAUEYajYCECABIAFBBGo2AgwgASABQQNqNgIIIAAgAUEIakHw4cOAABCzjYCAACABQSBqJICAgIAAC3YBA38gACgCAEEAOgAAAkAgACgCBCIBKAIAIgAoAgAiAkUNACACIAAoAgQoAgARhoCAgAAAIAAoAgQiAkEEaigCACIDRQ0AIAAoAgAgAyACQQhqKAIAELeFgIAACyABKAIAIgBBhOLDgAA2AgQgAEEBNgIAQQELRQEBfyOAgICAAEHQAGsiAySAgICAACADQQhqIAEgAhCakYCAACADQQhqIAAoAgAQs5GAgAAhAiADQdAAaiSAgICAACACCw8AIAAoAgAgARC/kICAAAscACAAKAIAIgAoAgAgAEEEaigCACABEIWRgIAAC+sCAQF/I4CAgIAAQTBrIgQkgICAgAACQAJAAkACQCAAKAIADgMAAgEACyAEIABBBGo2AgwgBEEsakEBNgIAIARCATcCHCAEQeDiw4AANgIYIARBlYaAgAA2AhQgBCAEQRBqNgIoIAQgBEEMajYCECACIARBGGogAygCFBGIgICAAAAhAAwCCyAAKAIEIAEgAiADIABBCGooAgAoAhARi4CAgAAAIQAMAQsgBCAAQQRqNgIMAkAgAUUNACAEQSxqQQA2AgAgBEGc4sOAADYCKCAEQgE3AhwgBEGk4sOAADYCGCACIARBGGogAygCFBGIgICAAAAhAAwBCyAEQSxqQQE2AgAgBEEkakEBNgIAIARBwOLDgAA2AiAgBEECNgIcIARBsOLDgAA2AhggBEGWhoCAADYCFCAEIARBEGo2AiggBCAEQQxqNgIQIAIgBEEYaiADKAIUEYiAgIAAACEACyAEQTBqJICAgIAAIAALaAEBfwJAIAAoAgAiAEEQaigCACIBRQ0AIAFBADoAACAAQRRqKAIAIgFFDQAgACgCECABQQEQt4WAgAALAkAgAEF/Rg0AIAAgACgCBCIBQX9qNgIEIAFBAUcNACAAQSBBCBC3hYCAAAsLQwAgACgCACEAAkAgARD0kICAAA0AAkAgARD1kICAAA0AIAAgARC/kICAAA8LIAAgARCnkYCAAA8LIAAgARCdkYCAAAsCAAt2AQF/I4CAgIAAQSBrIgUkgICAgAAgBSACNgIEIAUgATYCACAFQQhqQRBqIANBEGopAgA3AwAgBUEIakEIaiADQQhqKQIANwMAIAUgAykCADcDCCAAIAVB6OLDgAAgBUEEakHo4sOAACAFQQhqIAQQ15CAgAAAC4UCAQN/I4CAgIAAQSBrIgEkgICAgAAgACgCACICKAIAIQMgAiAAKAIENgIAIAEgA0EDcSIANgIEAkAgAEEBRw0AAkACQCADQX9qIgBFDQADQCAAKAIEIQIgACgCACEDIABBADYCACADRQ0CIABBAToACCABIAM2AgggA0EIahCuj4CAABCqj4CAACABKAIIIgAgACgCACIAQX9qNgIAAkAgAEEBRw0AIAFBCGoQro2AgAALIAIhACACDQALCyABQSBqJICAgIAADwtB6OPDgABBK0GU5MOAABC7kICAAAALIAFBADYCCEEAIAFBBGpB+OLDgAAgAUEIakHY48OAABCxjYCAAAAL8gMBCH8jgICAgABBEGsiAySAgICAACAAKAIAIQQDQCAEQQNxIQUCQAJAAkAC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AggiA2sgAU8NACAAIAMgARDPjYCAACAAKAIIIQMLIAAoAgAgA2ogAkEMaiABELyRgIAAGiAAIAMgAWo2AggLIAJBEGokgICAgABBAAtLAQF/AkAgACgCBCAAKAIIIgNrIAJPDQAgACADIAIQz42AgAAgACgCCCEDCyAAKAIAIANqIAEgAhC8kYCAABogACADIAJqNgIIQQALZAEBfwJAAkAgAEEIaigCACICIAFJDQACQCABRQ0AAkAgAiABSw0AIAIgAUYNAQwDCyAAKAIAIAFqLAAAQUBIDQILIABBCGogATYCAAsPC0GE6sOAAEEwQbTqw4AAELuQgIAAAAsXACAAKAIAIABBCGooAgAgARCFkYCAAAtOAQF/I4CAgIAAQRBrIgIkgICAgAAgAkEIaiABIAEoAgAoAgQRhICAgAAAIAIoAgwhASAAIAIoAgg2AgAgACABNgIEIAJBEGokgICAgAALogEDAX8BfgF/I4CAgIAAQRBrIgMkgICAgAACQCAAKAIEQQNGDQAgASACQQxqKAIAEYGAgIAAACIEQvvN1qfe5eGJQFINACABQQAgBEL7zdan3uXhiUBRGyIFKAIADQAgBSAAQQRqNgIACyADQQhqIAAgACgCACgCBBGEgICAAAAgAygCCCABIAIgAygCDCgCKBGDgICAAAAgA0EQaiSAgICAAAu/CQEKfyOAgICAAEGQAWsiAiSAgICAACACQThqIAAgACgCACgCBBGEgICAAAAgAiACKAI8IgM2AkQgAiACKAI4IgQ2AkACQAJAIAEQ85CAgAANAEEBIQUgAkH8AGpBATYCACACQgE3AmwgAkHE68OAADYCaCACQaKGgIAANgJUIAIgAkHQAGo2AnggAiACQcAAajYCUCABIAJB6ABqEPKQgIAADQEgAkEwaiACKAJAIAIoAkQoAhgRhICAgAAAAkAgAigCMCIDRQ0AIAIoAjQhBCACQfwAakEANgIAIAJBhOrDgAA2AnggAkIBNwJsIAJB5OvDgAA2AmggASACQegAahDykICAAA0CIAJBKGogAyAEKAIYEYSAgIAAACACKAIoIgZBAEchB0EAIQgDQCACQSBqIAMgBCgCGBGEgICAAAAgAigCJCEJIAIoAiAhCiACIAQ2AkwgAiADNgJIIAJBADYCfCACQYTqw4AANgJ4IAJCATcCbCACQfDr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EnZBB3FB8AFyOgAMQQQhAQwBCyACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDIQELAkAgACgCBCAAKAIIIgNrIAFPDQAgACADIAEQz42AgAAgACgCCCEDCyAAKAIAIANqIAJBDGogARC8kYCAABogACADIAFqNgIICyACQRBqJICAgIAAQQALdAEBfyOAgICAAEEgayICJICAgIAAIAIgACgCADYCBCACQQhqQRBqIAFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQeTuw4AAIAJBCGoQwpCAgAAhASACQSBqJICAgIAAIAELUAEBfwJAIAAoAgAiACgCBCAAKAIIIgNrIAJPDQAgACADIAIQz42AgAAgACgCCCEDCyAAKAIAIANqIAEgAhC8kYCAABogACADIAJqNgIIQQAL/wMBA38jgICAgABBwABrIgUkgICAgAAgBSACNgIMIAUgATYCCCAAQQhqKAIAIQYgACgCACEHAkACQCABRQ0AAkAgBiABSw0AIAYgAUYNAQwCCyAHIAFqLAAAQb9/TA0BCwJAAkAgAkUNAAJAIAYgAksNACAGIAJGDQEMAgsgByACaiwAAEFASA0BCyAFIAVBCGpBBHI2AjwgBUEBNgI4IAVBADYCMCAFIAVBCGo2AjQgBSAFQTBqIAZB/O3DgAAQ3o2AgAAgBSADNgIkIAVBKGogAyAEajYCACAFQRxqIgIgByAFKAIEIgFqNgIAIAUgADYCICAAQQhqIAUoAgAiADYCACAFIAE2AhAgBSAHIABqNgIYIAUgBiABazYCFCAFQRBqEOeNgIAAIAUoAiAhAAJAAkACQCACKAIAIAUoAhhHDQAgBSgCFCIGRQ0CIAUoAhAiAiAAKAIIIgFGDQEgACgCACIHIAFqIAcgAmogBhDBkYCAABoMAQsgBSgCFCIGRQ0BAkAgBSgCECICIAAoAggiAUYNACAAKAIAIgcgAWogByACaiAGEMGRgIAAGgsgACABIAZqNgIIDAELIAAgASAGajYCCAsgBUHAAGokgICAgAAPC0HH78OAAEEqQYTww4AAELuQgIAAAAtBx+/DgABBKkH078OAABC7kICAAAALGQAgACABQQhqKAIANgIEIAAgASgCADYCAAsSACABQZTww4AAQQ8Q8ZCAgAALPAAgACABKQAANwAAIABBGGogAUEYaikAADcAACAAQRBqIAFBEGopAAA3AAAgAEEIaiABQQhqKQAANwAACwQAIAALRQEBfyOAgICAAEEQayICJICAgIAAIAJBCGogARCnjoCAACACKAIMIQEgACACKAIINgIAIAAgATYCBCACQRBqJICAgIAACwQAIAALEAAgAEEANgIIIABCCDcCAAsIACAAKAIIRQu6AgEGfwJAAkACQAJAIAFBCGooAgAiAiAAQQhqKAIAIgNLDQAgAkUNAgwBCyADIQQCQCAAKAIEIANrIAIgA2siBU8NACAAIAMgBRD+jYCAACAAQQhqKAIAIQQLIAAoAgAiBiAEQQN0aiEHAkAgBUECSQ0AIAdBACACIANBf3NqQQN0ELmRgIAAGiAEIAJqQQN0IANBA3RrIAZqQXhqIQcgBSAEakF/aiEECwJAAkAgAiADRw0AIAQhAwwBCyAHQgA3AwAgBEEBaiEDCyAAQQhqIAM2AgALIAJBA3QhBSAAKAIAIQIgASgCACEBQX8hBANAIAMgBEEBaiIERg0CIAIgAikDACABKQMAhDcDACABQQhqIQEgAkEIaiECIAVBeGoiBQ0ACwsgAA8LIAMgA0GI8cOAABC3kICAAAALiQIBB38CQCABQQZ2IgIgAEEIaigCACIDSQ0AIAMhBAJAIAAoAgQgA2sgAkEBaiIFIANrIgZPDQAgACADIAYQ/o2AgAAgAEEIaigCACEECyAAKAIAIgcgBEEDdGohCAJAAkAgBkECTw0AIAQhBgwBCyAIQQAgAiADa0EDdBC5kYCAABogBiAEakF/aiEGIAcgBCACaiADa0EDdGohCAsCQAJAIAUgA0cNACAGIQMMAQsgCEIANwMAIAZBAWohAwsgAEEIaiADNgIACwJAIAIgA08NACAAKAIAIAJBA3RqIgMgAykDAEIBIAFBf3NBP3GthoQ3AwAgAA8LIAIgA0GY8cOAABC3kICAAAALSAEBfyAAQoCAgIAQNwNgIABCgICAgIAENwNYIABCADcDKCAAQgA3AwAgACABKAIAIgI2AlAgACACIAFBCGooAgBBA3RqNgJUC0gBAX8gAEKBgICAEDcDYCAAQoCAgICABDcDWCAAQgA3AyggAEIANwMAIAAgASgCACICNgJQIAAgAiABQQhqKAIAQQN0ajYCVAutAwECfyACKAIAIQMgASgCACEEAkACQAJAQX8gAkEIaigCACICIAFBCGooAgAiAUcgAiABSxtB/wFxDgIBAgALIABCADcCbCAAIAM2AmQgAEGo8cOAADYCYCAAIAQ2AlggAEIANwMwIABCADcDCCAAQQE2AoQBIABCIDcCfCAAQfQAakIANwIAIAAgAyACQQN0ajYCaCAAIAQgAUEDdGo2AlwgAEIANwMADwsgAEIANwMIIABB/ABqQoCAgIAQNwIAIABB9ABqQoCAgICABDcCACAAQfAAaiABNgIAIABB6ABqQQA2AgAgAEHgAGogAzYCACAAQdgAaiAENgIAIABBMGpCADcDACAAQewAaiABIAIgASACSRs2AgAgAEHkAGogAyACQQN0ajYCACAAQdwAaiAEIAFBA3RqNgIAIABCAjcDAA8LIABCADcCbCAAQajxw4AANgJoIAAgAzYCYCAAIAQ2AlggAEIANwMwIABCADcDCCAAQQE2AoQBIABCIDcCfCAAQfQAakIANwIAIAAgAyACQQN0ajYCZCAAIAQgAUEDdGo2AlwgAEIBNwMAC7UDAQJ/IAIoAgAhAyABKAIAIQQCQAJAAkBBfyACQQhqKAIAIgIgAUEIaigCACIBRyACIAFLG0H/AXEOAgECAAsgAEIANwJsIAAgAzYCZCAAQajxw4AANgJgIAAgBDYCWCAAQgA3AzAgAEIANwMIIABBATYChAEgAEKggICAEDcCfCAAQfQAakIANwIAIAAgAyACQQN0ajYCaCAAIAQgAUEDdGo2AlwgAEIANwMADwsgAEIANwMIIABB/ABqQoGAgIAQNwIAIABB9ABqQoCAgICABDcCACAAQfAAaiABNgIAIABB6ABqQQA2AgAgAEHgAGogAzYCACAAQdgAaiAENgIAIABBMGpCADcDACAAQewAaiABIAIgASACSRs2AgAgAEHkAGogAyACQQN0ajYCACAAQdwAaiAEIAFBA3RqNgIAIABCAjcDAA8LIABCADcCbCAAQajxw4AANgJoIAAgAzYCYCAAIAQ2AlggAEIANwMwIABCADcDCCAAQQE2AoQBIABCoICAgBA3AnwgAEH0AGpCADcCACAAIAMgAkEDdGo2AmQgACAEIAFBA3RqNgJcIABCATcDAAsSACAAQT8gAWtBP3GtiKdBAXELwwEBAX8CQAJAIAJFDQACQAJAAkACQAJAIAFBAEgNACADKAIIRQ0CIAMoAgQiBA0BIAENAyACIQMMBAsgAEEIakEANgIADAULIAMoAgAgBCACIAEQuIWAgAAhAwwCCyABDQAgAiEDDAELIAEgAhC2hYCAACEDCwJAIANFDQAgACADNgIEIABBCGogATYCACAAQQA2AgAPCyAAIAE2AgQgAEEIaiACNgIADAELIAAgATYCBCAAQQhqQQA2AgALIABBATYCAAv2AQEDfyOAgICAAEEgayIDJICAgIAAAkACQCABIAJqIgIgAUkNACAAQQRqKAIAIgFBAXQiBCACIAQgAksbIgJBBCACQQRLGyICQQN0IQQgAkGAgICAAUlBA3QhBQJAAkAgAUUNACADQQg2AhggAyABQQN0NgIUIAMgACgCADYCEAwBCyADQQA2AhgLIAMgBCAFIANBEGoQ/Y2AgAAgAygCBCEBAkAgAygCAA0AIAAgATYCACAAQQRqIAI2AgAMAgsgA0EIaigCACIAQYGAgIB4Rg0BIABFDQAgASAAEKiQgIAAAAsQqZCAgAAACyADQSBqJICAgIAAC0MAIAAoAgAhAAJAIAEQ9JCAgAANAAJAIAEQ9ZCAgAANACAAIAEQv5CAgAAPCyAAIAEQp5GAgAAPCyAAIAEQnZGAgAALDwAgACgCACABEIGRgIAACxEAQn8gACABfCIBIAEgAFQbCxEAQn8gACABfCIBIAEgAFQbCxEAQgAgACABfSIBIAEgAFYbCxsBAn5BfyAAKQMAIgIgASkDACIDUiACIANUGwsEACAACwQAIAALEQBCACAAIAF9IgEgASAAVhsLEQBCACAAIAF9IgEgASAAVhsLAgALBwAgAC0AEAsHACAAKAIECwcAIAAoAggLBwAgACgCDAvCAQEBfyOAgICAAEEgayICJICAgIAAIAIgAEEQajYCDCACIAA2AhAgAiAAQQRqNgIUIAIgAEEIajYCGCACIABBDGo2AhwgAUGw8cOAAEEWQcbxw4AAQQUgAkEMakHM8cOAAEHc8cOAAEEOIAJBEGpB7PHDgABB/PHDgABBGSACQRRqQezxw4AAQZXyw4AAQREgAkEYakHs8cOAAEGm8sOAAEESIAJBHGpB7PHDgAAQ+pCAgAAhACACQSBqJICAgIAAIAALBwAgACkDAAs6AQF+AkBCACAAQn98IgEgASAAVhtCA4AiASAAUg0AQbjyw4AAQRlBuPPDgAAQy5CAgAAACyAAIAF9Cw0AIAAoAghBAXQgAXILEAAgAEEANgIIIABCCDcCAAsNACAAIAEQ9o2AgAAaCxAAIAAgASgCABD3jYCAABoLwwEBAX8CQAJAIAJFDQACQAJAAkACQAJAIAFBAEgNACADKAIIRQ0CIAMoAgQiBA0BIAENAyACIQMMBAsgAEEIakEANgIADAULIAMoAgAgBCACIAEQuIWAgAAhAwwCCyABDQAgAiEDDAELIAEgAhC2hYCAACEDCwJAIANFDQAgACADNgIEIABBCGogATYCACAAQQA2AgAPCyAAIAE2AgQgAEEIaiACNgIADAELIAAgATYCBCAAQQhqQQA2AgALIABBATYCAAvoAQECfyOAgICAAEEgayIDJICAgIAAAkACQCABIAJqIgIgAUkNACAAQQRqKAIAIgFBAXQiBCACIAQgAksbIgJBCCACQQhLGyICQX9zQR92IQQCQAJAIAFFDQAgA0EBNgIYIAMgATYCFCADIAAoAgA2AhAMAQsgA0EANgIYCyADIAIgBCADQRBqEJWOgIAAIAMoAgQhAQJAIAMoAgANACAAIAE2AgAgAEEEaiACNgIADAILIANBCGooAgAiAEGBgICAeEYNASAARQ0AIAEgABCokICAAAALEKmQgIAAAAsgA0EgaiSAgICAAAuJAwEEfwJAIAAoAgAiAEE/Sw0AIABBAnQhAgJAIAEoAgQgASgCCCIARw0AIAEgAEEBEJaOgIAAIAEoAgghAAsgASAAQQFqNgIIIAEoAgAgAGogAjoAAA8LAkAgAEH//wBLDQAgAEECdEEBciECAkAgASgCBCABKAIIIgBrQQFLDQAgASAAQQIQlo6AgAAgASgCCCEACyABIABBAmo2AgggASgCACAAaiACOwAADwsCQCAAQf////8DSw0AIABBAnRBAnIhAgJAIAEoAgQgASgCCCIAa0EDSw0AIAEgAEEEEJaOgIAAIAEoAgghAAsgASAAQQRqNgIIIAEoAgAgAGogAjYAAA8LAkAgASgCBCIDIAEoAggiBEcNACABIARBARCWjoCAACABKAIEIQMgASgCCCEECyABIARBAWoiAjYCCCABKAIAIgUgBGpBAzoAAAJAIAMgAmtBA0sNACABIAJBBBCWjoCAACABKAIAIQUgASgCCCECCyABIAJBBGo2AgggBSACaiAANgAAC48HAQR/I4CAgIAAQRBrIgIkgICAgAAgAEEANgIIIABCATcCAAJAAkACQAJAAkACQCABKAIADgUAAQIDBAALIAFBDGooAgAhAyABKAIIIQQgASgCBCEFIABBAEEBEJaOgIAAIAAoAgAgACgCCCIBakEGOgAAIAAgAUEBaiIBNgIIAkAgACgCBCABa0EDSw0AIAAgAUEEEJaOgIAAIAAoAgghAQsgACABQQRqNgIIIAAoAgAgAWogBSgAADYAACACIAM2AgwgAkEMaiAAEJeOgIAAAkAgACgCBCAAKAIIIgFrIANPDQAgACABIAMQlo6AgAAgACgCCCEBCyAAKAIAIAFqIAQgAxC8kYCAABogASADaiEBDAQLIAFBDGooAgAhAyABKAIIIQQgASgCBCEFIABBAEEBEJaOgIAAIAAoAgAgACgCCCIBakEEOgAAIAAgAUEBaiIBNgIIAkAgACgCBCABa0EDSw0AIAAgAUEEEJaOgIAAIAAoAgghAQsgACABQQRqNgIIIAAoAgAgAWogBSgAADYAACACIAM2AgwgAkEMaiAAEJeOgIAAAkAgACgCBCAAKAIIIgFrIANPDQAgACABIAMQlo6AgAAgACgCCCEBCyAAKAIAIAFqIAQgAxC8kYCAABogASADaiEBDAMLIAFBDGooAgAhAyABKAIIIQQgASgCBCEFIABBAEEBEJaOgIAAIAAoAgAgACgCCCIBakEFOgAAIAAgAUEBaiIBNgIIAkAgACgCBCABa0EDSw0AIAAgAUEEEJaOgIAAIAAoAgghAQsgACABQQRqNgIIIAAoAgAgAWogBSgAADYAACACIAM2AgwgAkEMaiAAEJeOgIAAAkAgACgCBCAAKAIIIgFrIANPDQAgACABIAMQlo6AgAAgACgCCCEBCyAAKAIAIAFqIAQgAxC8kYCAABogASADaiEBDAILIAFBCGooAgAhAyABKAIEIQQgAEEAQQEQlo6AgAAgACgCACAAKAIIIgFqQQA6AAAgACABQQFqNgIIIAIgAzYCDCACQQxqIAAQl46AgAACQCAAKAIEIAAoAggiAWsgA08NACAAIAEgAxCWjoCAACAAKAIIIQELIAAoAgAgAWogBCADELyRgIAAGiABIANqIQEMAQsgAEEAQQEQlo6AgAAgACgCACAAKAIIIgFqQQg6AAAgAUEBaiEBCyAAIAE2AgggAkEQaiSAgICAAAsZACAAIAFBCGooAgA2AgQgACABKAIANgIAC9MBAQF/AkACQAJAAkACQCABLQAAIgIOBQABAgMEAAsgACABQQFqNgIEIABBDGogAUEQaigCADYCACAAIAFBCGooAgA2AgggACACNgIADwsgACABQQFqNgIEIABBDGogAUEQaigCADYCACAAIAFBCGooAgA2AgggACACNgIADwsgACABQQFqNgIEIABBDGogAUEQaigCADYCACAAIAFBCGooAgA2AgggACACNgIADwsgAEEIaiABQQxqKAIANgIAIAAgAUEEaigCADYCBAsgACACNgIAC+cBAQJ/I4CAgIAAQRBrIgIkgICAgAACQAJAAkACQAJAIAEtAAAiAw4FAAECAwQACyACQQxqIAFBEGooAgA2AgAgAiABQQFqNgIEIAIgAUEIaigCADYCCAwDCyACQQxqIAFBEGooAgA2AgAgAiABQQFqNgIEIAIgAUEIaigCADYCCAwCCyACQQxqIAFBEGooAgA2AgAgAiABQQFqNgIEIAIgAUEIaigCADYCCAwBCyACQQhqIAFBDGooAgA2AgAgAiABQQRqKAIANgIECyACIAM2AgAgACACEJiOgIAAIAJBEGokgICAgAAL8wEBAX8CQAJAAkACQAJAAkACQAJAAkAgAg4EAAECAwALQQAhAiABKAIARQ0FDAcLQQAhAiABKAIAQQFGDQMMBgtBACECIAEoAgBBAkYNAQwFCwJAIAEoAgBBA0YNAEEAIQIMBQsgAUEIaiECIAFBBGohAQwDCyABKAIEKAAAIAMoAABHDQMgAUEMaiECIAFBCGohAQwCCyABKAIEKAAAIAMoAABHDQIgAUEMaiECIAFBCGohAQwBCyABKAIEKAAAIAMoAABHDQEgAUEMaiECIAFBCGohAQsgAigCACEEIAEoAgAhAgsgACAENgIEIAAgAjYCAAsOACAAIAEgAhChjoCAAAsCAAtvAQF/I4CAgIAAQRBrIgIkgICAgAACQAJAIAAoAgQNACABQejzw4AAQRAQ8ZCAgAAhAAwBCyACIAA2AgwgAUHI88OAAEEIQdDzw4AAQQYgAkEMakHY88OAABD3kICAACEACyACQRBqJICAgIAAIAALDwAgACgCACABELeRgIAACxgAIAAgASACQQAoAozhxIAAEYOAgIAAAAsYACAAIAEgAkEAKAKU4cSAABGDgICAAAALGAAgACABIAJBACgCnOHEgAARg4CAgAAAC1gAIAAgASACELiOgIAAEM6DgIAAIgIpAAA3AAAgAEEYaiACQRhqKQAANwAAIABBEGogAkEQaikAADcAACAAQQhqIAJBCGopAAA3AAAgAkEgQQEQt4WAgAALOAAgACABIAIQuI6AgAAQz4OAgAAiAikAADcAACAAQQhqIAJBCGopAAA3AAAgAkEQQQEQt4WAgAALKAAgACABIAIQuI6AgAAQ0IOAgAAiAikAADcAACACQQhBARC3hYCAAAsQACAAQSA2AgQgACABNgIAC1cBAX9BASEDAkAgAkEgRw0AIAAgASkAADcAASAAQRlqIAFBGGopAAA3AAAgAEERaiABQRBqKQAANwAAIABBCWogAUEIaikAADcAAEEAIQMLIAAgAzoAAAt8ACAAIAEpAAA3AAAgAEE4aiABQThqKQAANwAAIABBMGogAUEwaikAADcAACAAQShqIAFBKGopAAA3AAAgAEEgaiABQSBqKQAANwAAIABBGGogAUEYaikAADcAACAAQRBqIAFBEGopAAA3AAAgAEEIaiABQQhqKQAANwAAC3wAIAAgASkAADcAACAAQThqIAFBOGopAAA3AAAgAEEwaiABQTBqKQAANwAAIABBKGogAUEoaikAADcAACAAQSBqIAFBIGopAAA3AAAgAEEYaiABQRhqKQAANwAAIABBEGogAUEQaikAADcAACAAQQhqIAFBCGopAAA3AAALAgALBABBAAsCAAsCAAuLAgIDfwN+I4CAgIAAQdAAayIFJICAgIAAAkAgAw0AQQAoAqjhxIAAIQNBACgCpOHEgAAhBkEAKALE4cSAACEHIAIpAgAhCCACKQIIIQkgAikCECEKIAVByABqIAIoAhg2AgAgBUE8aiAKNwIAIAVBMGogCTcDACAFQSRqIAApAhA3AgAgBUEcaiAAKQIINwIAIAVBATYCRCAFQQA2AjggBUEANgIsIAUgCDcCDCAFIAE2AgggBSAAKQIANwIUIAZB+PPDgAAgB0ECRiICGyAFQQhqIANBhPTDgAAgAhsoAhQRhICAgAAAIAVB0ABqJICAgIAADwtB8fTDgABB1QBByPXDgAAQsI6AgAAACzMBAX8jgICAgABBEGsiAySAgICAACADIAI2AgggAyABNgIEIAMgADYCACADELSOgIAAAAsCAAslAAJAIAEoAgANABC1j4CAAAALIABB2PXDgAA2AgQgACABNgIAC2YBAn8gASgCACECIAFBADYCAAJAAkAgAkUNACABKAIEIQNBCEEEELaFgIAAIgFFDQEgASADNgIEIAEgAjYCACAAQdj1w4AANgIEIAAgATYCAA8LELWPgIAAAAtBCEEEEKiQgIAAAAs4AQF/I4CAgIAAQRBrIgEkgICAgAAgAUEIaiAAQQhqKAIANgIAIAEgACkCADcDACABELWOgIAAAAs6AQF/I4CAgIAAQRBrIgEkgICAgAAgASAAKQIANwMIIAFBCGpB6PXDgABBACAAKAIIQQEQxY+AgAAACwIACw0AQuuRk7X22LOi9AALDAAgAa1CIIYgAK2ECxMAIAAgAUIgiD4CBCAAIAE+AgALBAAgAAtmAQF/AkACQAJAAkAgAg0AQQEhAwwBCyACQX9MDQEgAkEBELaFgIAAIgNFDQILIAMgASACELyRgIAAIQEgACACNgIIIAAgAjYCBCAAIAE2AgAPCxCpkICAAAALIAJBARCokICAAAALGQAgACABQQhqKAIANgIEIAAgASgCADYCAAvMAgEFfyOAgICAAEEQayICJICAgIAAIAEoAgAhAwJAAkACQAJAAkAgAUEIaigCACIBQRdqIgQNACACQQA2AgggAkIBNwMADAELIARBf0wNAiAEQQEQtoWAgAAiBUUNA0EAIQYgAkEANgIIIAIgBDYCBCACIAU2AgAgAUFpSQ0BCyACQQBBFxC/joCAACACKAIEIQQgAigCACEFIAIoAgghBgsgBSAGaiIFQQApAPz1w4AANwAAIAVBD2pBACkAi/bDgAA3AAAgBUEIakEAKQCE9sOAADcAACACIAZBF2oiBjYCCAJAIAQgBmsgAU8NACACIAYgARC/joCAACACKAIIIQYLIAIoAgAgBmogAyABELyRgIAAGiAAQQhqIAYgAWo2AgAgACACKQMANwIAIAJBEGokgICAgAAPCxCpkICAAAALIARBARCokICAAAAL2gEAAkACQCACRQ0AAkACQAJAAkACQAJAIAFBAEgNACADKAIIDQEgAQ0CQQEhAgwECyAAQQhqQQA2AgAMBgsCQCADKAIEIgINAAJAIAENAEEBIQIMBAsgAUEBELaFgIAAIQIMAgsgAygCACACQQEgARC4hYCAACECDAELIAFBARC2hYCAACECCyACRQ0BCyAAIAI2AgQgAEEIaiABNgIAIABBADYCAA8LIAAgATYCBCAAQQhqQQE2AgAgAEEBNgIADwsgACABNgIEIABBCGpBADYCAAsgAEEBNgIAC+gBAQJ/I4CAgIAAQSBrIgMkgICAgAACQAJAIAEgAmoiAiABSQ0AIABBBGooAgAiAUEBdCIEIAIgBCACSxsiAkEIIAJBCEsbIgJBf3NBH3YhBAJAAkAgAUUNACADQQE2AhggAyABNgIUIAMgACgCADYCEAwBCyADQQA2AhgLIAMgAiAEIANBEGoQvo6AgAAgAygCBCEBAkAgAygCAA0AIAAgATYCACAAQQRqIAI2AgAMAgsgA0EIaigCACIAQYGAgIB4Rg0BIABFDQAgASAAEKiQgIAAAAsQqZCAgAAACyADQSBqJICAgIAAC/cBAQJ/I4CAgIAAQTBrIgIkgICAgAAgACgCACEDAkACQCABEPOQgIAARQ0AIAJBJGpBADYCACACQZT2w4AANgIgIAJCATcCFCACQZz3w4AANgIQQQEhACABIAJBEGoQ8pCAgAANAQtBACEAAkADQCACIAMgAGo2AgwgAkEBNgIkIAJBATYCHCACQaT3w4AANgIYIAJBATYCFCACQfT2w4AANgIQIAJBxIaAgAA2AiwgAiACQShqNgIgIAIgAkEMajYCKCABIAJBEGoQ8pCAgAANASAAQQFqIgBBIEcNAAtBACEADAELQQEhAAsgAkEwaiSAgICAACAAC5IBAQF/I4CAgIAAQSBrIgMkgICAgAAgAyACNgIEAkAgAkEgRw0AIAAgASkAADcAACAAQRhqIAFBGGopAAA3AAAgAEEQaiABQRBqKQAANwAAIABBCGogAUEIaikAADcAACADQSBqJICAgIAADwsgA0EANgIIQQAgA0EEakHE98OAACADQQhqQcj3w4AAEMiOgIAAAAuIAQEBfyOAgICAAEEwayICJICAgIAAIAIgADYCDCACQSRqQQE2AgAgAkEcakEBNgIAIAJB/PbDgAA2AhggAkEBNgIUIAJB9PbDgAA2AhAgAkHFhoCAADYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDykICAACEAIAJBMGokgICAgAAgAAs8ACAAIAEpAAA3AAAgAEEYaiABQRhqKQAANwAAIABBEGogAUEQaikAADcAACAAQQhqIAFBCGopAAA3AAALGwBBfyAAIAFBIBC6kYCAACIBQQBHIAFBAEgbC0MAIAAoAgAhAAJAIAEQ9JCAgAANAAJAIAEQ9ZCAgAANACAAIAEQv5CAgAAPCyAAIAEQp5GAgAAPCyAAIAEQnZGAgAALDwAgACgCACABEJ6RgIAACwIAC3YBAX8jgICAgABBIGsiBSSAgICAACAFIAI2AgQgBSABNgIAIAVBCGpBEGogA0EQaikCADcDACAFQQhqQQhqIANBCGopAgA3AwAgBSADKQIANwMIIAAgBUHY98OAACAFQQRqQdj3w4AAIAVBCGogBBDXkICAAAALwQMBA38CQAJAAkACQAJAAkAgBEEBdEEBciACTw0AIAFBsPABOwAAIARFDQECQAJAIAMtAAAiBkEPSw0AQQIhByAFDQELQQMhByACQQNJDQMgASAGQQR2Qej3w4AAai0AADoAAgsgByACTw0DIAEgB2ogBkEPcUHo98OAAGotAAA6AAAgAyAEaiEIIAdBAWohB0EAIQRBASEGA0ACQAJAIARBAXFFDQAgAyAIRw0BDAgLIAggA2sgBk0NByADIAZqIQMLIAcgAk8NBSABIAdqIgYgAy0AACIFQQR2Qej3w4AAai0AADoAAAJAIAdBAWogAk8NACADQQFqIQNBASEEIAZBAWogBUEPcUHo98OAAGotAAA6AAAgB0ECaiEHQQAhBgwBCwsgB0EBaiACQdT5w4AAELeQgIAAAAtB1fjDgABBL0GE+cOAABC7kICAAAALQQBBAEGU+cOAABC3kICAAAALQQJBAkGk+cOAABC3kICAAAALIAcgAkG0+cOAABC3kICAAAALIAcgAkHE+cOAABC3kICAAAALAkAgByACSw0AIAAgBzYCBCAAIAE2AgAPCyAHIAJB5PnDgAAQuZCAgAAAC98BAQJ/I4CAgIAAQTBrIgIkgICAgAACQAJAIAAoAgAiA0GAgMQARw0AIAJBHGpBADYCACACQej3w4AANgIYIAJCATcCDCACQbT6w4AANgIIIAEgAkEIahDykICAACEADAELIAIgAzYCACACIAAoAgQ2AgQgAkEcakECNgIAIAJBLGpBgoCAgAA2AgAgAkICNwIMIAJBkPrDgAA2AgggAkHIhoCAADYCJCACIAJBIGo2AhggAiACQQRqNgIoIAIgAjYCICABIAJBCGoQ8pCAgAAhAAsgAkEwaiSAgICAACAAC9ICAQd/AkACQCACDQBBACEGDAELIAEgAmohByACQQFxIQhBACEJQQAhCkEAIQZBACECA0AgCSELQQAgAmshDAJAA0ACQAJAAkAgAS0AACICQb9/akH/AXFBBkkNACACQZ9/akH/AXFBBkkNASACQVBqIglB/wFxQQpJDQQCQCACQXdqIglBF0sNAEEBIAl0QZOAgARxDQMLIAAgAjYCACAAQQJBACAFGyAMazYCBA8LIAJBSWohCQwDCyACQal/aiEJDAILIAxBf2ohDCALIQogAUEBaiIBIAdHDQAMAwsLIAkgCkEEdHIhCgJAAkAgCEEBRg0AQQEhCAwBCwJAIAYgBEkNACAGIARBvPrDgAAQt5CAgAAACyADIAZqIAo6AAAgBkEBaiEGQQAhCAtBASAMayECIAFBAWoiASAHRw0ACwsgAEGBgMQANgIAIAAgBjYCBAuGAgEBfyOAgICAAEHAAGsiAiSAgICAAAJAAkAgACgCAA0AIAJBJGpBATYCACACQgI3AhQgAkGA+8OAADYCECACQYKAgIAANgIsIAIgAEEIaigCADYCPCACIAJBKGo2AiAgAiACQTxqNgIoIAEgAkEQahDykICAACEADAELIAIgACgCBDYCDCACQSRqQQI2AgAgAkEoakEMakGCgICAADYCACACQgM3AhQgAkHg+sOAADYCECACQYKAgIAANgIsIAIgAEEMaigCADYCPCACIAJBKGo2AiAgAiACQTxqNgIwIAIgAkEMajYCKCABIAJBEGoQ8pCAgAAhAAsgAkHAAGokgICAgAAgAAtmAQF/I4CAgIAAQSBrIgIkgICAgAAgAkEUakEBNgIAIAJCATcCBCACQdD7w4AANgIAIAJByYaAgAA2AhwgAiAANgIYIAIgAkEYajYCECABIAIQ8pCAgAAhACACQSBqJICAgIAAIAALJAAgAEGAgMQANgIMIAAgAzYCCCAAIAE2AgAgACABIAJqNgIEC2sBAn8gACgCDCEBIABBgIDEADYCDAJAIAFBgIDEAEcNAEGAgMQAIQEgACgCACICIAAoAgRGDQAgACACQQFqNgIAIAAgACgCCCIBIAItAAAiAkEPcWotAAA2AgwgASACQQR2ai0AACEBCyABCzQAIABBATYCBCAAQQhqIAEoAgQgASgCAGtBAXQgASgCDEGAgMQAR3IiATYCACAAIAE2AgALGgAgAEKAgICAEDcCACAAQQhqIAEoAgQ2AgALZwECfwJAIAEoAgQiBCADSQ0AIAIgASgCACIFIAMQvJGAgAAaIAEgBCADazYCBCABIAUgA2o2AgAgAEEANgIADwsgAEIANwIEIABBEGpBHjYCACAAQQxqQdj7w4AANgIAIABBATYCAAsEAEEECwQAQQgLOgEBf0EBIQECQCAAKAIAKAIAIgBBwABJDQBBAiEBIABBgIABSQ0AQQRBBSAAQYCAgIAESRshAQsgAQsEACAACwQAIAALPgECfwJAAkAgACgCACIAKAIAIgINACAAQQhqIQMgACgCBCECDAELIABBCGohAwsgAiADKAIAIAEQgpGAgAALAgAL2wEBBH9BACECQQEhAwNAIAMhBAJAA0ACQCAEQX9qIgQNAAJAIAEgAEEEaigCACIEIABBCGooAgAgBBsgAEEMaigCABDxkICAAEUNAEEBDwsCQCAAKAIARQ0AQQEhBSABQfj7w4AAQQEQ8ZCAgAANA0EBIQUgAUH3+8OAAEEBEPGQgIAADQMgA0EBaiEDIAJBAWohAiAAKAIAIQAMBAsCQCACRQ0AQQEhBSABQff7w4AAQQEQ8ZCAgAANAwtBAA8LQQEhBSABQfb7w4AAQQEQ8ZCAgABFDQALCwsgBQsdACAAQgA3AgAgAEEMaiACNgIAIABBCGogATYCAAtrAQF/I4CAgIAAQRBrIgIkgICAgAAgAiAANgIIIAIgAEEEajYCDCABQfn7w4AAQQVB/vvDgABBBSACQQhqQYT8w4AAQZT8w4AAQQQgAkEMakGY/MOAABD4kICAACEAIAJBEGokgICAgAAgAAtsAQF/I4CAgIAAQRBrIgIkgICAgAACQAJAIAAoAgAiACgCAA0AIAFBvPzDgABBBBDxkICAACEADAELIAIgADYCDCABQaj8w4AAQQQgAkEMakGs/MOAABD9kICAACEACyACQRBqJICAgIAAIAALAgALcwEBfyOAgICAAEEQayICJICAgIAAIAIgACgCACgCACIANgIIIAIgAEEE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KCABIAJBGGoQ8pCAgAAhBAwBCyACQQxqQeCGgIAANgIAIAJBLGpBAjYCACACQgM3AhwgAkGYgMSAADYCGCACQeCGgIAANgIEIAIgACgCACIANgIAIAIgAEEIajYCCCACIAI2AiggASACQRhqEPKQgIAAIQQLIAJBMGokgICAgAAgBAsZACAAKAIAIgAoAgAgACgCBCABEIWRgIAACxQAIAAoAgAgACgCBCABEIWRgIAACzgBAX8jgICAgABBEGsiASSAgICAACABQQhqIABBCGooAgA2AgAgASAAKQIANwMAIAEQgI+AgAAACzoBAX8jgICAgABBEGsiASSAgICAACABIAApAgA3AwggAUEIakGogcSAAEEAIAAoAghBARDFj4CAAAALAgALDQBC65GTtfbYs6L0AAszAQF/I4CAgIAAQRBrIgMkgICAgAAgAyACNgIIIAMgATYCBCADIAA2AgAgAxD/joCAAAALAgALJQACQCABKAIADQAQtY+AgAAACyAAQbyBxIAANgIEIAAgATYCAAtmAQJ/IAEoAgAhAiABQQA2AgACQAJAIAJFDQAgASgCBCEDQQhBBBC2hYCAACIBRQ0BIAEgAzYCBCABIAI2AgAgAEG8gcSAADYCBCAAIAE2AgAPCxC1j4CAAAALQQhBBBCokICAAAALDABC8IyDl4jR840TCw0AQq/Jh7TGk+mW5wALDQBC65GTtfbYs6L0AAudAgEDfyOAgICAAEHAAGsiAySAgICAAAJAAkAgAQ0AQeSBxIAAQQAgAhCFkYCAACEEDAELIANBEGogACABEJiRgIAAIAMgAykDEDcDGCADQSBqIANBGGoQlpGAgAACQCADKAIgRQ0AIANBMGpBCGohBQNAIAUgA0EgakEIaikDADcDACADIAMpAyA3AzAgA0EIaiADQTBqEJSRgIAAIAMoAgwhASADKAIIIQAgAyADQTBqEJWRgIAAAkAgAygCBA0AIAAgASACEIWRgIAAIQQMAwtBASEEIAIgACABEPGQgIAADQIgAkH9/wMQgJGAgAANAiADQSBqIANBGGoQlpGAgAAgAygCIA0ACwtBACEECyADQcAAaiSAgICAACAEC0MAIAAoAgAhAAJAIAEQ9JCAgAANAAJAIAEQ9ZCAgAANACAAIAEQv5CAgAAPCyAAIAEQp5GAgAAPCyAAIAEQnZGAgAALDwAgACgCACABEIGRgIAACxQAIAAoAgAgACgCBCABEIWRgIAAC+gBAQJ/I4CAgIAAQSBrIgMkgICAgAACQAJAIAEgAmoiAiABSQ0AIABBBGooAgAiAUEBdCIEIAIgBCACSxsiAkEIIAJBCEsbIgJBf3NBH3YhBAJAAkAgAUUNACADQQE2AhggAyABNgIUIAMgACgCADYCEAwBCyADQQA2AhgLIAMgAiAEIANBEGoQn4+AgAAgAygCBCEBAkAgAygCAA0AIAAgATYCACAAQQRqIAI2AgAMAgsgA0EIaigCACIAQYGAgIB4Rg0BIABFDQAgASAAEKiQgIAAAAsQqZCAgAAACyADQSBqJICAgIAAC5ECAQJ/I4CAgIAAQSBrIgIkgICAgAAgACgCACIDKAIAIQAgA0EANgIAAkACQCAARQ0AAkAgAEEUai0AAA0AIABBAToAFEEALQDQ4cSAACEAQQBBAToA0OHEgAAgAiAAOgAHIAANAgJAAkBBACgC6OHEgABB/////wdxRQ0AEJCPgIAARQ0BC0EAKALo4cSAAEH/////B3FFDQAQkI+AgAANAEEAQQE6ANHhxIAAC0EAQQA6ANDhxIAACyACQSBqJICAgIAADwtBqILEgABBK0GwhsSAABC7kICAAAALIAJBADYCHCACQeSBxIAANgIYIAJCATcCDCACQYCNxIAANgIIIAJBB2ogAkEIahCRj4CAAAALDABBACgCxOXEgABFC34BAX8jgICAgABBIGsiAiSAgICAACACQYSCxIAANgIEIAIgADYCACACQQhqQRBqIAFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCEEAIAJBiILEgAAgAkEEakGIgsSAACACQQhqQcCNxIAAENeQgIAAAAuJAgECfyOAgICAAEEQayIDJICAgIAAAkACQCACKAIARQ0AQcuGxIAAIQJBCSEEDAELIAMgAigCBCACKAIIEMmQgIAAQcuGxIAAIAMoAgQgAygCACIEGyECQQkgA0EIaigCACAEGyEECyACIAQgARCKj4CAACECAkACQCAAKAIAIgFFDQAgAEEEaigCACIARQ0BIAEgAEEBELeFgIAADAELIAAtAARBA0cNACAAQQhqKAIAIgAoAgAgACgCBCgCABGGgICAAAACQCAAKAIEIgFBBGooAgAiBEUNACAAKAIAIAQgAUEIaigCABC3hYCAAAsgAEEMQQQQt4WAgAALIANBEGokgICAgAAgAgsCAAtBAQF/IAAoAgAhAQJAIABBBGotAAANAEEAKALo4cSAAEH/////B3FFDQAQkI+AgAANACABQQE6AAELIAFBADoAAAuNAQEDfwJAAkAgACgCACIBRQ0AIABBBGooAgAiAEUNASABIABBARC3hYCAAA8LIAAtAARBA0cNACAAQQhqKAIAIgEoAgAgASgCBCgCABGGgICAAAACQCABKAIEIgJBBGooAgAiA0UNACABKAIAIAMgAkEIaigCABC3hYCAAAsgACgCCEEMQQQQt4WAgAALC2MBAX8CQCAAQRBqKAIAIgFFDQAgAUEAOgAAIABBFGooAgAiAUUNACAAKAIQIAFBARC3hYCAAAsCQCAAQX9GDQAgACAAKAIEIgFBf2o2AgQgAUEBRw0AIABBIEEIELeFgIAACwsjAQF/AkAgAEEEaigCACIBRQ0AIAAoAgAgAUEBELeFgIAACwsqAQF/AkAgACgCBCIBRQ0AIABBCGooAgAiAEUNACABIABBARC3hYCAAAsLegEBfyOAgICAAEEgayIDJICAgIAAIANBxI7EgAA2AgQgAyAANgIAIANBCGpBEGogAUEQaikCADcDACADQQhqQQhqIAFBCGopAgA3AwAgAyABKQIANwMIQQAgA0GYgsSAACADQQRqQZiCxIAAIANBCGogAhDXkICAAAALDwAgACgCACABEIiRgIAAC/kCAQJ/I4CAgIAAQRBrIgIkgICAgAAgACgCACEAAkACQAJAAkAgAUGAAUkNACACQQA2AgwgAUGAEE8NASACIAFBP3FBgAFyOgANIAIgAUEGdkHAAXI6AAxBAiEBDAILAkAgACgCCCIDIAAoAgRHDQAgACADEJyPgIAAIAAoAgghAwsgACADQQFqNgIIIAAoAgAgA2ogAToAAAwCCwJAIAFBgIAESQ0AIAIgAUE/cUGAAXI6AA8gAiABQQZ2QT9xQYABcjoADiACIAFBDHZBP3FBgAFyOgANIAIgAUESdkEHcUHwAXI6AAxBBCEBDAELIAIgAUE/cUGAAXI6AA4gAiABQQx2QeABcjoADCACIAFBBnZBP3FBgAFyOgANQQMhAQsCQCAAQQRqKAIAIAAoAggiA2sgAU8NACAAIAMgARCOj4CAACAAKAIIIQMLIAAoAgAgA2ogAkEMaiABELyRgIAAGiAAIAMgAWo2AggLIAJBEGokgICAgABBAAvmAQEDfyOAgICAAEEgayICJICAgIAAAkACQCABQQFqIgFFDQAgAEEEaigCACIDQQF0IgQgASAEIAFLGyIBQQggAUEISxsiAUF/c0EfdiEEAkACQCADRQ0AIAJBATYCGCACIAM2AhQgAiAAKAIANgIQDAELIAJBADYCGAsgAiABIAQgAkEQahCfj4CAACACKAIEIQMCQCACKAIADQAgACADNgIAIABBBGogATYCAAwCCyACQQhqKAIAIgBBgYCAgHhGDQEgAEUNACADIAAQqJCAgAAACxCpkICAAAALIAJBIGokgICAgAALdAEBfyOAgICAAEEgayICJICAgIAAIAIgACgCADYCBCACQQhqQRBqIAFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQcyBxIAAIAJBCGoQwpCAgAAhASACQSBqJICAgIAAIAELUwEBfwJAIAAoAgAiAEEEaigCACAAKAIIIgNrIAJPDQAgACADIAIQjo+AgAAgACgCCCEDCyAAKAIAIANqIAEgAhC8kYCAABogACADIAJqNgIIQQALwwEBAX8CQAJAIAJFDQACQAJAAkACQAJAIAFBAEgNACADKAIIRQ0CIAMoAgQiBA0BIAENAyACIQMMBAsgAEEIakEANgIADAULIAMoAgAgBCACIAEQuIWAgAAhAwwCCyABDQAgAiEDDAELIAEgAhC2hYCAACEDCwJAIANFDQAgACADNgIEIABBCGogATYCACAAQQA2AgAPCyAAIAE2AgQgAEEIaiACNgIADAELIAAgATYCBCAAQQhqQQA2AgALIABBATYCAAv8AwEGfwJAAkACQAJAAkAgAUEJSQ0AQRBBCBDJj4CAACABSw0BDAILIAAQoY+AgAAhAgwCC0EQQQgQyY+AgAAhAQsQ3I+AgAAiA0EIEMmPgIAAIQRBFEEIEMmPgIAAIQVBEEEIEMmPgIAAIQZBACECQQBBEEEIEMmPgIAAQQJ0ayIHIAMgBiAEIAVqamtB+P97akF3cUF9aiIDIAcgA0kbIAFrIABNDQAgAUEQIABBBGpBEEEIEMmPgIAAQXtqIABLG0EIEMmPgIAAIgRq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BkEBcjYCBCAAIAIQ1o+AgAAgABDbj4CAACEGDAYLQQAgBjYCtOXEgAAMAwsgACAAKAIEIAVqNgIEQQAoApTlxIAAQQAoAozlxIAAIAVqEKePgIAADAMLQQAgAzYCkOXEgABBAEEAKAKI5cSAACACaiIANgKI5cSAACADIAAQ14+AgAAgBhDbj4CAACEGDAMLIAMgAiAAENiPgIAAAkAgAkGAAkkNACADIAIQpI+AgAAgBhDbj4CAACEGDAMLIAJBeHFBgOLEgABqIQACQAJAQQAoAvjhxIAAIgRBASACQQN2dCICcUUNACAAKAIIIQIMAQtBACAEIAJyNgL44cSAACAAIQILIAAgAzYCCCACIAM2AgwgAyAANgIMIAMgAjYCCCAGENuPgIAAIQYMAgtBAEH/HzYCuOXEgABBACAINgKs5cSAAEEAIAU2AqTlxIAAQQAgBjYCoOXEgABBAEGA4sSAADYCjOLEgABBAEGI4sSAADYClOLEgABBAEGA4sSAADYCiOLEgABBAEGQ4sSAADYCnOLEgABBAEGI4sSAADYCkOLEgABBAEGY4sSAADYCpOLEgABBAEGQ4sSAADYCmOLEgABBAEGg4sSAADYCrOLEgABBAEGY4sSAADYCoOLEgABBAEGo4sSAADYCtOLEgABBAEGg4sSAADYCqOLEgABBAEGw4sSAADYCvOLEgABBAEGo4sSAADYCsOLEgABBAEG44sSAADYCxOLEgABBAEGw4sSAADYCuOLEgABBAEHA4sSAADYCzOLEgABBAEG44sSAADYCwOLEgABBAEHA4sSAADYCyOLEgABBAEHI4sSAADYC1OLEgABBAEHI4sSAADYC0OLEgABBAEHQ4sSAADYC3OLEgABBAEHQ4sSAADYC2OLEgABBAEHY4sSAADYC5OLEgABBAEHY4sSAADYC4OLEgABBAEHg4sSAADYC7OLEgABBAEHg4sSAADYC6OLEgABBAEHo4sSAADYC9OLEgABBAEHo4sSAADYC8OLEgABBAEHw4sSAADYC/OLEgABBAEHw4sSAADYC+OLEgABBAEH44sSAADYChOPEgABBAEH44sSAADYCgOPEgABBAEGA48SAADYCjOPEgABBAEGI48SAADYClOPEgABBAEGA48SAADYCiOPEgABBAEGQ48SAADYCnOPEgABBAEGI48SAADYCkOPEgABBAEGY48SAADYCpOPEgABBAEGQ48SAADYCmOPEgABBAEGg48SAADYCrOPEgABBAEGY48SAADYCoOPEgABBAEGo48SAADYCtOPEgABBAEGg48SAADYCqOPEgABBAEGw48SAADYCvOPEgABBAEGo48SAADYCsOPEgABBAEG448SAADYCxOPEgABBAEGw48SAADYCuOPEgABBAEHA48SAADYCzOPEgABBAEG448SAADYCwOPEgABBAEHI48SAADYC1OPEgABBAEHA48SAADYCyOPEgABBAEHQ48SAADYC3OPEgABBAEHI48SAADYC0OPEgABBAEHY48SAADYC5OPEgABBAEHQ48SAADYC2OPEgABBAEHg48SAADYC7OPEgABBAEHY48SAADYC4OPEgABBAEHo48SAADYC9OPEgABBAEHg48SAADYC6OPEgABBAEHw48SAADYC/OPEgABBAEHo48SAADYC8OPEgABBAEH448SAADYChOTEgABBAEHw48SAADYC+OPEgABBAEH448SAADYCgOTEgAAQ3I+AgAAiA0EIEMmPgIAAIQRBFEEIEMmPgIAAIQdBEEEIEMmPgIAAIQhBACAGIAYQ24+AgAAiAEEIEMmPgIAAIABrIgoQ2Y+AgAAiADYClOXEgABBACADIAVqIAggBCAHamogCmprIgY2AozlxIAAIAAgBkEBcjYCBBDcj4CAACIDQQgQyY+AgAAhBEEUQQgQyY+AgAAhBUEQQQgQyY+AgAAhByAAIAYQ2Y+AgAAgByAFIAQgA2tqajYCBEEAQYCAgAE2ArDlxIAAC0EAIQZBACgCjOXEgAAiACACTQ0AQQAgACACayIGNgKM5cSAAEEAQQAoApTlxIAAIgAgAhDZj4CAACIDNgKU5cSAACADIAZBAXI2AgQgACACENaPgIAAIAAQ24+AgAAhBgsgAUEQaiSAgICAACAGC9IFAQR/IAAgARDZj4CAACECAkACQAJAIAAQ0I+AgAANACAAKAIAIQMCQAJAIAAQ04+AgAANACADIAFqIQEgACADENqPgIAAIgBBACgCkOXEgABHDQEgAigCBEEDcUEDRw0CQQAgATYCiOXEgAAgACABIAIQ2I+AgAAPC0H44cSAACAAIANrIAMgAWpBEGoiABDpj4CAAEUNAkEAQQAoApjlxIAAIABrNgKY5cSAAA8LAkAg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IABB5IHEgAA2AhggAEIBNwIMIABBgJDEgAA2AgggAEEIakGIkMSAABC2kICAAAALIABBADYCHCAAQeSBxIAANgIYIABCATcCDCAAQbiQxIAANgIIIABBBGogAEEIakHAkMSAABCZj4CAAAALIABBHGpBADYCACAAQeSBxIAANgIYIABCATcCDCAAQZCMxIAANgIIIABBCGpB0IzEgAAQtpCAgAAACwcAIABBEGoL8AEBBn8jgICAgABBEGsiAiSAgICAAAJAAkAgACgCCEECRg0AIABBCGogARCckICAACEDDAELQQAhAyAAKAIEIgRFDQAgACgCACEAAkADQCACIAAgBBDJkICAAAJAIAIoAgANACACKAIEIAIoAgggARCFkYCAAEUNAwwCCyACLQAJIQUgAi0ACCEGIAIoAgQhB0GQh8SAAEEDIAEQhZGAgAANASAGQQFxRQ0CAkAgBCAHIAVqIgZJDQAgACAGaiEAIAQgBmsiBA0BDAMLCyAGIARBhIrEgAAQuJCAgAAAC0EBIQMLIAJBEGokgICAgAAgAwuRAgECfyOAgICAAEEgayIBJICAgIAAAkACQAJAAkACQEEAKALM4cSAAA4CAQIAC0EALQDQ4cSAACECQQBBAToA0OHEgAAgASACOgAHIAINAwJAAkACQEEAKALo4cSAAEH/////B3FFDQAQkI+AgAAhAiAAQgA3AgAgAg0BDAILIABCADcCAAtBACgC6OHEgABB/////wdxRQ0AEJCPgIAADQBBAEEBOgDR4cSAAAtBAEEAOgDQ4cSAAAwCC0EAQQE2AszhxIAACyAAQQE2AgALIAFBIGokgICAgAAPCyABQQA2AhwgAUHkgcSAADYCGCABQgE3AgwgAUGAjcSAADYCCCABQQdqIAFBCGoQkY+AgAAACwcAIAAoAgAL/gkBCX8jgICAgABBoAFrIgIkgICAgAACQAJAAkACQAJAAkACQCAAKAIADgMCAAECCyABQbyFxIAAQRIQ8ZCAgAAhAAwFCwJAIAAoAgRBA0YNACACIABBBGoiAzYCgAEgAiACQYABajYCOCADQQAgAkE4akGAhsSAAEHkhcSAABCoj4CAAAsCQAJAAkAgARDzkICAAA0AIABBFGooAgAiBCAAQQhqKAIAIgNJDQIgAEEMaigCACADQQxsaiEFIAQgA2shA0EAIQAMAQsgAEEUaigCACEDIABBDGooAgAhBUEBIQALIAJBADYCCCACIAA6ABQgAkHoi8SAAK1CIIZCAoQ3AgwgAkEYakEMakGohcSAADYCACACIAA6ACggAkEANgIcIAIgATYCGCACIAJBCGo2AiAgA0UNAyAFIANBDGxqIQYgAkE4akEMaiEBIAJBgAFqQQRyIQcDQAJAAkACQCAFQQhqKAIAIgNFDQAgBSgCACIAIANBLGxqIQgDQCACQQA2AjQgAiACQRhqNgIwAkACQCAAKAIAIgMNAEEDIQQMAQsgAkGAAWogAyAAQQhqKAIAIgkQyZCAgABBAiEEAkAgAigCgAENACACKAKEASIKRQ0AIAJBgAFqIAogAigCiAEQm5CAgAAgAigCgAEiCkECRg0AIAJB4ABqQRhqIAdBGGooAgA2AgAgAkHgAGpBEGogB0EQaikCADcDACACQeAAakEIaiAHQQhqKQIANwMAIAIgBykCADcDYCAKIQQLIAEgAikDYDcCACABQRhqIAJB4ABqQRhqKAIANgIAIAFBEGogAkHgAGpBEGopAwA3AgAgAUEIaiACQeAAakEIaikDADcCACACIAk2AjwgAiADNgI4CyACIAQ2AkACQAJAIABBDGooAgAiA0ECRw0AIAJBAjYCgAEMAQsgAiADNgKAASACIABBGGooAgA2AogBIAIgAEEQaigCADYChAELIAJBMGogAkE4aiACQYABaiAAQRxqKAIAIABBIGooAgAgAEEkaigCACAAQShqKAIAELOPgIAAIQMgAigCMCIEIAQoAgRBAWo2AgQgAw0CIABBLGoiACAIRw0ADAMLCyACQQA2AmQgAiACQRhqNgJgIAJBAzYCQCACQQI2AoABIAJB4ABqIAJBOGogAkGAAWpBACACQQAgAhCzj4CAACEAIAIoAmAiAyADKAIEQQFqNgIEIABFDQELAkACQCACKAIIIgBFDQAgAigCDCIBRQ0BIAAgAUEBELeFgIAAQQEhAAwJCyACLQAMQQNHDQAgAkEIakEIaigCACIAKAIAIAAoAgQoAgARhoCAgAAAAkAgACgCBCIBQQRqKAIAIgNFDQAgACgCACADIAFBCGooAgAQt4WAgAALIAIoAhBBDEEEELeFgIAAC0EBIQAMBwsgBUEMaiIFIAZGDQMMAAsLIAMgBEGYhcSAABC4kICAAAAL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AEF+IAdBA3Z3cTYC+OHEgAALAkAgCEEQQQgQyY+AgABJDQAgASAEENmPgIAAIQUgASAEENSPgIAAIAUgCBDUj4CAACAFIAgQoo+AgAAMAQsgASAFENSPgIAACyABDQMLIAMQoY+AgAAiBEUNASAEIAAgARDOj4CAAEF4QXwgARDTj4CAABtqIgIgAyACIANJGxC8kYCAACEDIAAQpo+AgAAgAw8LIAIgACABIAMgASADSRsQvJGAgAAaIAAQpo+AgAALIAIPCyABENOPgIAAGiABENuPgIAAC0UAAkAgACABEKCPgIAAIgFFDQACQEH44cSAABDrj4CAAEUNACABEN2PgIAAENOPgIAADQELIAFBACAAELmRgIAAGgsgAQuDAwEEfyOAgICAAEEgayICJICAgIAAAkACQAJAQQAoAujhxIAAQf////8HcUUNABCQj4CAAEUNAQtBACgC2OHEgAAhA0EAQX82AtjhxIAAIAMNAQJAAkACQEEAKALo4cSAAEH/////B3ENAEEAKALk4cSAACEEQQAgATYC5OHEgABBACgC4OHEgAAhA0EAIAA2AuDhxIAADAELEJCPgIAAIQVBACgC5OHEgAAhBEEAIAE2AuThxIAAQQAoAuDhxIAAIQNBACAANgLg4cSAACAFRQ0BC0EAKALo4cSAAEH/////B3FFDQAQkI+AgAANAEEAQQE6ANzhxIAAC0EAQQA2AtjhxIAAAkAgA0UNACADIAQoAgARhoCAgAAAIARBBGooAgAiAUUNACADIAEgBEEIaigCABC3hYCAAAsgAkEgaiSAgICAAA8LIAJBHGpBADYCACACQeSBxIAANgIYIAJCATcCDCACQaSIxIAANgIIIAJBCGpByIjEgAAQtpCAgAAACwAAC30BA38jgICAgABBEGsiASSAgICAAAJAAkAgABDQkICAACICRQ0AIAAQz5CAgAAiA0UNASABIAI2AgggASAANgIEIAEgAzYCACABELiPgIAAAAtBqILEgABBK0HoiMSAABC7kICAAAALQaiCxIAAQStB2IjEgAAQu5CAgAAAC7ECAgR/AX4jgICAgABBMGsiAiSAgICAACABQQRqIQMCQCABKAIEDQAgASgCACEEIAJBCGpBCGoiBUEANgIAIAJCATcDCCACIAJBCGo2AhQgAkEYakEQaiAEQRBqKQIANwMAIAJBGGpBCGogBEEIaikCADcDACACIAQpAgA3AxggAkEUakHMgcSAACACQRhqEMKQgIAAGiADQQhqIAUoAgA2AgAgAyACKQMINwIACyACQRhqQQhqIgQgA0EIaigCADYCACABQQxqQQA2AgAgAykCACEGIAFCATcCBCACIAY3AxgCQEEMQQQQtoWAgAAiAQ0AQQxBBBCokICAAAALIAEgAikDGDcCACABQQhqIAQoAgA2AgAgAEH4iMSAADYCBCAAIAE2AgAgAkEwaiSAgICAAAvIAQEDfyOAgICAAEEwayICJICAgIAAIAFBBGohAwJAIAEoAgQNACABKAIAIQEgAkEIakEIaiIEQQA2AgAgAkIBNwMIIAIgAkEIajYCFCACQRhqQRBqIAFBEGopAgA3AwAgAkEYakEIaiABQQhqKQIANwMAIAIgASkCADcDGCACQRRqQcyBxIAAIAJBGGoQwpCAgAAaIANBCGogBCgCADYCACADIAIpAwg3AgALIABB+IjEgAA2AgQgACADNgIAIAJBMGokgICAgAALTgECfyABKAIEIQIgASgCACEDAkBBCEEEELaFgIAAIgENAEEIQQQQqJCAgAAACyABIAI2AgQgASADNgIAIABBiInEgAA2AgQgACABNgIACxQAIABBiInEgAA2AgQgACABNgIAC50CAQJ/I4CAgIAAQSBrIgUkgICAgABBAEEAKALo4cSAACIGQQFqNgLo4cSAAAJAAkAgBkEASA0AQQBBACgCxOXEgABBAWoiBjYCxOXEgAAgBkECSw0AIAUgBDoAGCAFIAM2AhQgBSACNgIQIAVBwInEgAA2AgwgBUHkgcSAADYCCEEAKALY4cSAACIDQX9MDQBBACADQQFqIgM2AtjhxIAAAkBBACgC4OHEgABFDQAgBSAAIAEoAhARhICAgAAAIAUgBSkDADcDCEEAKALg4cSAACAFQQhqQQAoAuThxIAAKAIUEYSAgIAAAEEAKALY4cSAACEDC0EAIANBf2o2AtjhxIAAIAZBAUsNACAEDQELAAALIAAgARDGj4CAAAALMQEBfyOAgICAAEEQayICJICAgIAAIAIgATYCDCACIAA2AgggAkEIahDIj4CAABoAAAslAQF/IAAgAUEAKALU4cSAACICQemGgIAAIAIbEYSAgIAAAAAACwQAAAALEAAgACABakF/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NgI0IAJBtJ/EgAA2AjAgAiACQSBqNgJAIAJBLGpBmJHEgAAgAkEwahDCkICAACEDCyACKAIQIQQCQCADRQ0AIARFDQAgAUG0oMSAAEEUEPGQgIAARQ0BDAMLIAMNAiAEDQELIAEgACgCGCAAQRxqKAIAEPGQgIAAIQMMAgtB3J/EgABBNyACQcgAakGUoMSAAEGkoMSAABDakICAAAALQQEhAwsgAkHQAGokgICAgAAgAwsSACABQcigxIAAQRIQ8ZCAgAALggEBAn8jgICAgABBEGsiAiSAgICAACAAKAIAIgBBCGooAgAhAyAAKAIAIQAgAiABEP+QgIAAAkAgA0UNAANAIAIgADYCDCACIAJBDGpBxKLEgAAQ4ZCAgAAaIABBAWohACADQX9qIgMNAAsLIAIQ4pCAgAAhACACQRBqJICAgIAAIAALQwAgACgCACEAAkAgARD0kICAAA0AAkAgARD1kICAAA0AIAAgARCRkYCAAA8LIAAgARCXkYCAAA8LIAAgARCekYCAAAsPACAAKAIAIAEQspGAgAALAgALEQAgACgCACABEKOQgIAAQQAL8AIBAn8jgICAgABBEGsiAiSAgICAAAJAAkACQAJAIAFBgAFJDQAgAkEANgIMIAFBgBBPDQEgAiABQT9xQYABcjoADSACIAFBBnZBwAFyOgAMQQIhAQwCCwJAIAAoAggiAyAAKAIERw0AIAAgAxCqkICAACAAKAIIIQMLIAAgA0EBajYCCCAAKAIAIANqIAE6AAAMAgsCQCABQYCABEkNACACIAFBP3FBgAFyOgAPIAIgAUEGdkE/cUGAAXI6AA4gAiABQQx2QT9xQYABcjoADSACIAFBEnZBB3FB8AFyOgAMQQQhAQwBCyACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDIQELAkAgAEEEaigCACAAKAIIIgNrIAFPDQAgACADIAEQppCAgAAgACgCCCEDCyAAKAIAIANqIAJBDGogARC8kYCAABogACADIAFqNgIICyACQRBqJICAgIAAC3QBAX8jgICAgABBIGsiAiSAgICAACACIAAoAgA2AgQgAkEIakEQaiABQRBqKQIANwMAIAJBCGpBCGogAUEIaikCADcDACACIAEpAgA3AwggAkEEakGsosSAACACQQhqEMKQgIAAIQEgAkEgaiSAgICAACABC1MBAX8CQCAAKAIAIgBBBGooAgAgACgCCCIDayACTw0AIAAgAyACEKaQgIAAIAAoAgghAwsgACgCACADaiABIAIQvJGAgAAaIAAgAyACajYCCEEAC+gBAQJ/I4CAgIAAQSBrIgMkgICAgAACQAJAIAEgAmoiAiABSQ0AIABBBGooAgAiAUEBdCIEIAIgBCACSxsiAkEIIAJBCEsbIgJBf3NBH3YhBAJAAkAgAUUNACADQQE2AhggAyABNgIUIAMgACgCADYCEAwBCyADQQA2AhgLIAMgAiAEIANBEGoQp5CAgAAgAygCBCEBAkAgAygCAA0AIAAgATYCACAAQQRqIAI2AgAMAgsgA0EIaigCACIAQYGAgIB4Rg0BIABFDQAgASAAEKiQgIAAAAsQqZCAgAAACyADQSBqJICAgIAAC9oBAAJAAkAgAkUNAAJAAkACQAJAAkACQCABQQBIDQAgAygCCA0BIAENAkEBIQIMBAsgAEEIakEANgIADAYLAkAgAygCBCICDQACQCABDQBBASECDAQLIAFBARC2hYCAACECDAILIAMoAgAgAkEBIAEQuIWAgAAhAgwBCyABQQEQtoWAgAAhAgsgAkUNAQsgACACNgIEIABBCGogATYCACAAQQA2AgAPCyAAIAE2AgQgAEEIakEBNgIAIABBATYCAA8LIAAgATYCBCAAQQhqQQA2AgALIABBATYCAAsNACAAIAEQq5CAgAAAC04BAX8jgICAgABBIGsiACSAgICAACAAQRxqQQA2AgAgAEHUosSAADYCGCAAQgE3AgwgAEGEo8SAADYCCCAAQQhqQYyjxIAAELaQgIAAAAvmAQEDfyOAgICAAEEgayICJICAgIAAAkACQCABQQFqIgFFDQAgAEEEaigCACIDQQF0IgQgASAEIAFLGyIBQQggAUEISxsiAUF/c0EfdiEEAkACQCADRQ0AIAJBATYCGCACIAM2AhQgAiAAKAIANgIQDAELIAJBADYCGAsgAiABIAQgAkEQahCnkICAACACKAIEIQMCQCACKAIADQAgACADNgIAIABBBGogATYCAAwCCyACQQhqKAIAIgBBgYCAgHhGDQEgAEUNACADIAAQqJCAgAAACxCpkICAAAALIAJBIGokgICAgAALDQAgACABELqFgIAAAAtfAQJ/QQAhAkEEIQMCQCABQQVJDQAgASEDAkACQCABQXtqDgICAQALIAFBeWohAUEBIQJBBiEDDAELQQAhAUEBIQJBBSEDCyAAIAI2AgQgACADNgIAIABBCGogATYCAAufBAEGfyOAgICAAEEwayICJICAgIAAAkACQAJAAkACQAJAIAEoAgQiA0UNACABKAIAIQQgA0F/akH/////AXEiA0EBaiIFQQdxIQYCQAJAIANBB08NAEEAIQUgBCEDDAELIARBPGohAyAFQfj///8DcSEHQQAhBQNAIAMoAgAgA0F4aigCACADQXBqKAIAIANBaGooAgAgA0FgaigCACADQVhqKAIAIANBUGooAgAgA0FIaigCACAFampqampqamohBSADQcAAaiEDIAdBeGoiBw0ACyADQURqIQMLAkAgBkUNACADQQRqIQMDQCADKAIAIAVqIQUgA0EIaiEDIAZBf2oiBg0ACwsgAUEUaigCAA0BIAUhBgwDC0EAIQUgAUEUaigCAA0BQQEhAwwECyAEKAIEDQAgBUEQSQ0CCyAFIAVqIgYgBUkNAQsgBkUNAAJAAkAgBkF/TA0AIAZBARC2hYCAACIDRQ0BIAYhBQwDCxCpkICAAAALIAZBARCokICAAAALQQEhA0EAIQULIABBADYCCCAAIAU2AgQgACADNgIAIAIgADYCDCACQRBqQRBqIAFBEGopAgA3AwAgAkEQakEIaiABQQhqKQIANwMAIAIgASkCADcDEAJAIAJBDGpBrKLEgAAgAkEQahDCkICAAEUNAEGco8SAAEEzIAJBKGpB0KPEgABB+KPEgAAQ2pCAgAAACyACQTBqJICAgIAACw8AIABBDGogARCQkYCAAAt1AQJ/IAEoAgAhAgJAAkACQAJAIAFBCGooAgAiAQ0AQQEhAwwBCyABQX9MDQEgAUEBELaFgIAAIgNFDQILIAMgAiABELyRgIAAIQIgACABNgIIIAAgATYCBCAAIAI2AgAPCxCpkICAAAALIAFBARCokICAAAALhQEBAX8jgICAgABBMGsiAiSAgICAACACIAE2AgQgAiAANgIAIAJBHGpBAjYCACACQSxqQYKAgIAANgIAIAJCAzcCDCACQeikxIAANgIIIAJBgoCAgAA2AiQgAiACQSBqNgIYIAIgAkEEajYCKCACIAI2AiAgAkEIakGApcSAABC2kICAAAALgQEBAX8jgICAgABBMGsiAySAgICAACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQYKAgIAANgIAIANCAzcCDCADQaSlxIAANgIIIANBgoCAgAA2AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACELaQgIAAAAuFAQEBfyOAgICAAEEwayICJICAgIAAIAIgATYCBCACIAA2AgAgAkEcakECNgIAIAJBLGpBgoCAgAA2AgAgAkIDNwIMIAJB1KXEgAA2AgggAkGCgICAADYCJCACIAJBIGo2AhggAiACQQRqNgIoIAIgAjYCICACQQhqQeylxIAAELaQgIAAAAtrAQF/I4CAgIAAQRBrIgIkgICAgAAgAiAANgIIIAIgAEEMajYCDCABQaimxIAAQQ1BjKbEgABBBSACQQhqQfylxIAAQZGmxIAAQQUgAkEMakGYpsSAABD4kICAACEAIAJBEGokgICAgAAgAAsNACAAKAIAGgN/DAALCwIAC0wBAX8jgICAgABBIGsiAiSAgICAACACQQE6ABggAiABNgIUIAIgADYCECACQcSqxIAANgIMIAJBuKbEgAA2AgggAkEIahDAj4CAAAALgQEBAX8jgICAgABBMGsiAySAgICAACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQYKAgIAANgIAIANCAjcCDCADQfipxIAANgIIIANBgoCAgAA2AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACELaQgIAAAAsPACAAIAEgAhCJkYCAAAALDwAgACABIAIQipGAgAAAC+YHAQh/IAAoAhAhAwJAAkACQCAAKAIIIgRBAUYNACADQQFHDQELAkAgA0EBRw0AIAEgAmohBSAAQRRqKAIAQQFqIQZBACEHIAEhCAJAA0AgCCEDIAZBf2oiBkUNASADIAVGDQICQAJAIAMsAAAiCUF/TA0AIANBAWohCCAJQf8BcSEJDAELIAMtAAFBP3EhCCAJQR9xIQoCQCAJQV9LDQAgCkEGdCAIciEJIANBAmohCAwBCyAIQQZ0IAMtAAJBP3FyIQgCQCAJQXBPDQAgCCAKQQx0ciEJIANBA2ohCAwBCyAIQQZ0IAMtAANBP3FyIApBEnRBgIDwAHFyIglBgIDEAEYN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D0shBCAAQQR2IQAgBA0ACyADQYABaiIAQYEBTw0BIAFBAUH4rMSAAEECIAIgA2pBgAFqQQAgA2sQ5pCAgAAhAAwCCyAAQYABQeisxIAAELiQgIAAAAsgAEGAAUHorMSAABC4kICAAAALIAJBgAFqJICAgIAAIAALOwEBfyOAgICAAEEQayICJICAgIAAIAIgACgCADYCDCACQQxqIAEQwJCAgAAhACACQRBqJICAgIAAIAALxAUBCn8jgICAgABBMGsiAySAgICAACADQSRqIAE2AgAgA0EDOgAoIANCgICAgIAENwMIIAMgADYCIEEAIQQgA0EANgIYIANBADYCEAJAAkACQAJAIAIoAggiBQ0AIAJBFGooAgAiAEUNASACKAIQIQEgAEEDdCEGIABBf2pB/////wFxQQFqIQQgAigCACEAA0ACQCAAQQRqKAIAIgdFDQAgAygCICAAKAIAIAcgAygCJCgCDBGFgICAAAANBAsgASgCACADQQhqIAFBBGooAgARiICAgAAADQMgAUEIaiEBIABBCGohACAGQXhqIgYNAAwCCwsgAkEMaigCACIBRQ0AIAFBBXQhCCABQX9qQf///z9xQQFqIQQgAigCACEAQQAhBgNAAkAgAEEEaigCACIBRQ0AIAMoAiAgACgCACABIAMoAiQoAgwRhYCAgAAADQMLIAMgBSAGaiIBQRxqLQAAOgAoIAMgAUEEaikCAEIgiTcDCCABQRhqKAIAIQkgAigCECEKQQAhC0EAIQcCQAJAAkAgAUEUaigCAA4DAQACAQsgCUEDdCEMQQAhByAKIAxqIgxBBGooAgBBkoeAgABHDQEgDCgCACgCACEJC0EBIQcLIAMgCTYCFCADIAc2AhAgAUEQaigCACEHAkACQAJAIAFBDGooAgAOAwEAAgELIAdBA3QhCSAKIAlqIglBBGooAgBBkoeAgABHDQEgCSgCACgCACEHC0EBIQsLIAMgBzYCHCADIAs2AhggCiABKAIAQQN0aiIBKAIAIANBCGogASgCBBGIgICAAAANAiAAQQhqIQAgCCAGQSBqIgZHDQALCwJAIAQgAigCBE8NACADKAIgIAIoAgAgBEEDdGoiASgCACABKAIEIAMoAiQoAgwRhYCAgAAADQELQQAhAQwBC0EBIQELIANBMGokgICAgAAgAQuKAQEEfyOAgICA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QQM2AjwgAkIDNwIsIAJBjKrEgAA2AiggAiACQRBqNgI4IAQgASACQShqEMKQgIAAIQMLIAJBwABqJICAgIAAIAMLeQEDfyOAgICAAEEgayICJICAgIAAIAFBHGooAgAhAyABKAIYIQQgAkEIakEQaiAAKAIAIgFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCCAEIAMgAkEIahDCkICAACEBIAJBIGokgICAgAAgAQsZACABIAAoAgAiACgCACAAKAIEELqQgIAAC1gBAX8jgICAgABBIGsiAiSAgICAACACQRRqQQE2AgAgAkIBNwIEIAJB1KrEgAA2AgAgAkGTh4CAADYCHCACIAA2AhggAiACQRhqNgIQIAIgARC2kICAAAALegEBfyOAgICAAEEgayIDJICAgIAAIAMgATYCBCADIAA2AgAgA0EIakEQaiACQRBqKQIANwMAIANBCGpBCGogAkEIaikCADcDACADIAIpAgA3AwhBACADQZjGxIAAIANBBGpBmMbEgAAgA0EIakGkr8SAABDXkICAAAAL2QMBAX8jgICAgABB8ABrIgckgICAgAAgByACNgIMIAcgATYCCCAHIAQ2AhQgByADNgIQAkACQAJAAkAgAEH/AXEOAwABAgALIAdB5arEgAA2AhhBAiECDAILIAdB46rEgAA2AhhBAiECDAELIAdB3KrEgAA2AhhBByECCyAHIAI2AhwCQCAFKAIADQAgB0E4akEUakGWh4CAADYCACAHQcQAakGWh4CAADYCACAHQdgAakEUakEDNgIAIAdCBDcCXCAHQcirxIAANgJYIAdBk4eAgAA2AjwgByAHQThqNgJoIAcgB0EQajYCSCAHIAdBCGo2AkAgByAHQRhqNgI4IAdB2ABqIAYQtpCAgAAACyAHQSBqQRBqIAVBEGopAgA3AwAgB0EgakEIaiAFQQhqKQIANwMAIAcgBSkCADcDICAHQdgAakEUakEENgIAIAdB1ABqQYGAgIAANgIAIAdBOGpBFGpBloeAgAA2AgAgB0HEAGpBloeAgAA2AgAgB0IENwJcIAdBpKvEgAA2AlggB0GTh4CAADYCPCAHIAdBOGo2AmggByAHQSBqNgJQIAcgB0EQajYCSCAHIAdBCGo2AkAgByAHQRhqNgI4IAdB2ABqIAYQtpCAgAAA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AowBQX9qELmRgIAAGiAEIACnQTByOgBlIARBADYCjAELIAMgAkG4psSAAEEAIARB5QBqIAQoAowBIgdqQScgB2sQ5pCAgAAhAyAEQZABaiSAgICAACADC9YGAQd/AkACQCABRQ0AQStBgIDEACAAKAIAIgZBAXEiARshByABIAVqIQgMAQsgBUEBaiEIIAAoAgAhBkEtIQcLAkACQCAGQQRxDQBBACECDAELAkACQCADQRBJDQAgAiADEO6QgIAAIQkMAQsCQCADDQBBACEJDAELIANBA3EhCgJAAkAgA0F/akEDTw0AQQAhCSACIQEMAQsgA0F8cSELQQAhCSACIQEDQCAJIAEsAABBv39KaiABLAABQb9/SmogASwAAkG/f0pqIAEsAANBv39KaiEJIAFBBGohASALQXxqIgsNAAsLIApFDQADQCAJIAEsAABBv39KaiEJIAFBAWohASAKQX9qIgoNAAsLIAkgCGohCAsCQAJAIAAoAggNAEEBIQEgAEEYaigCACIJIABBHGooAgAiACAHIAIgAxDvkICAAA0BIAkgBCAFIAAoAgwRhYCAgAAADwsCQAJAAkACQAJAIABBDGooAgAiCyAITQ0AIAZBCHENBCALIAhrIgkhCEEBIAAtACAiASABQQNGG0EDcSIBDgMDAQIDC0EBIQEgAEEYaigCACIJIABBHGooAgAiACAHIAIgAxDvkICAAA0EIAkgBCAFIAAoAgwRhYCAgAAADwtBACEIIAkhAQwBCyAJQQF2IQEgCUEBakEBdiEICyABQQFqIQEgAEEcaigCACEKIABBGGooAgAhCyAAKAIEIQkCQANAIAFBf2oiAUUNASALIAkgCigCEBGIgICAAABFDQALQQEPC0EBIQEgCUGAgMQARg0BIAsgCiAHIAIgAxDvkICAAA0BIAsgBCAFIAooAgwRhYCAgAAADQFBACEBAkADQAJAIAggAUcNACAIIQEMAgsgAUEBaiEBIAsgCSAKKAIQEYiAgIAAAEUNAAsgAUF/aiEBCyABIAhJIQEMAQsgACgCBCEGIABBMDYCBCAALQAgIQxBASEBIABBAToAICAAQRhqKAIAIgkgAEEcaigCACIKIAcgAiADEO+QgIAADQAgCyAIa0EBaiEBAkADQCABQX9qIgFFDQEgCUEwIAooAhARiICAgAAARQ0AC0EBDwtB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AkHcACEAAkACQAJAAkACQAJAIAFBgIC8f2pBAyABQf//wwBLGw4EAgEFAAILQQAhBkH9ACEAIAEhAgJAAkACQCAHQf8BcQ4GBAcFAAECBAtBAiEGQfsAIQAMBQtBAyEGQfUAIQAMBAtBBCEGQdwAIQAMAwtBgIDEACECIAUhACAHIQYgBUGAgMQARw0DCyADQScgBBGIgICAAAAhAgwECyAHQQEgBRshBkEwQdcAIAEgBUECdHZBD3EiAkEKSRsgAmohACAFQX9qQQAgBRshBQsgASECCyADIAAgBBGIgICAAABFDQALQQEPCyACC8QCAQF/I4CAgIAAQRBrIgIkgICAgAAgACgCACEAAkACQAJAIAEoAghBAUYNACABKAIQQQFHDQELIAJBADYCDAJAAkAgAEGAAUkNAAJAIABBgBBJDQACQCAAQYCABEkNACACIABBP3FBgAFyOgAPIAIgAEESdkHwAXI6AAwgAiAAQQZ2QT9xQYABcjoADiACIABBDHZBP3FBgAFyOgANQQQhAAwDCyACIABBP3FBgAFyOgAOIAIgAEEMdkHgAXI6AAwgAiAAQQZ2QT9xQYABcjoADUEDIQAMAgsgAiAAQT9xQYABcjoADSACIABBBnZBwAFyOgAMQQIhAAwBCyACIAA6AAxBASEACyABIAJBDGogABC6kICAACEBDAELIAEoAhggACABQRxqKAIAKAIQEYiAgIAAACEBCyACQRBqJICAgIAAIAELhAIBBn8jgICAgABBgAFrIgIkgICAgAAgAUEMaigCACEDIAEoAgghBCABKAIAIgUhBgJAIAVBBHFFDQAgBUEIciEGIAQNACABQoGAgICgATcCCAsgASAGQQRyNgIAQQAhBgNAIAIgBmpB/wBqQTBB1wAgAEEPcSIHQQpJGyAHajoAACAGQX9qIQYgAEEPSyEHIABBBHYhACAHDQALAkAgBkGAAWoiAEGBAU8NACABQQFB+KzEgABBAiACIAZqQYABakEAIAZrEOaQgIAAIQAgASADNgIMIAEgBDYCCCABIAU2AgAgAkGAAWokgICAgAAgAA8LIABBgAFB6KzEgAAQuJCAgAAAC4EBAQF/I4CAgIAAQTBrIgMkgICAgAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakGCgICAADYCACADQgI3AgwgA0HYsMSAADYCCCADQYKAgIAANgIkIAMgA0EgajYCGCADIANBBGo2AiggAyADNgIgIANBCGogAhC2kICAAAALgQEBAX8jgICAgABBMGsiAySAgICAACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQYKAgIAANgIAIANCAjcCDCADQfiwxIAANgIIIANBgoCAgAA2AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACELaQgIAAAAuBAQEBfyOAgICAAEEwayIDJICAgIAAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpBgoCAgAA2AgAgA0ICNwIMIANBrLHEgAA2AgggA0GCgICAADYCJCADIANBIGo2AhggAyADQQRqNgIoIAMgAzYCICADQQhqIAIQtpCAgAAAC0oBAX8jgICAgABBIGsiASSAgICAACABQRxqQQA2AgAgAUG4psSAADYCGCABQgE3AgwgAUHwscSAADYCCCABQQhqIAAQtpCAgAAAC0oBAX8jgICAgABBIGsiASSAgICAACABQRxqQQA2AgAgAUG4psSAADYCGCABQgE3AgwgAUGkssSAADYCCCABQQhqIAAQtpCAgAAAC4EBAQF/I4CAgIAAQTBrIgMkgICAgAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakGCgICAADYCACADQgM3AgwgA0HsssSAADYCCCADQYKAgIAANgIkIAMgA0EgajYCGCADIAM2AiggAyADQQRqNgIgIANBCGogAhC2kICAAAALoAEBAn8CQCABDQBBAA8LIAFBA3EhAgJAAkAgAUF/akEDTw0AQQAhAQwBCyABQXxxIQNBACEBA0AgASAALAAAQb9/SmogACwAAUG/f0pqIAAsAAJBv39KaiAALAADQb9/SmohASAAQQRqIQAgA0F8aiIDDQALCwJAIAJFDQADQCABIAAsAABBv39KaiEBIABBAWohACACQX9qIgINAAsLIAELhQIBAX8jgICAgABBMGsiAiSAgICAAAJAAkAgAC0ABEUNACACIABBBWotAAA6AAcgAkEUakGCgICAADYCACACIAA2AhAgAkHBhYCAADYCDCABQRxqKAIAIQAgAiACQQdqNgIIIAEoAhghASACQQI2AiwgAkICNwIcIAJB5LXEgAA2AhggAiACQQhq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QgAgAKx9IABBf0oiABsgACABEKaRgIAACyEAIAEoAhhBqMbEgABBBSABQRxqKAIAKAIMEYWAgIAAAAsPACAAKAIAIAEQwJCAgAALrAEBAX8jgICAgABBMGsiAiSAgICAACAAKAIAIQAgAkEMakGZh4CAADYCACACIAAoAgAiADYCECACQZqHgIAANgIEIAIgAGg2AhQgAUEcaigCACEAIAIgAkEUajYCCCACIAJBEGo2AgAgASgCGCEBIAJBAjYCLCACQgM3AhwgAkGQqcSAADYCGCACIAI2AiggASAAIAJBGGoQwpCAgAAhASACQTBqJICAgIAAIAELwAEAAkACQAJAAkACQCAAKAIALQAADgUAAQIDBAALIAEoAhhBpMXEgABBBSABQRxqKAIAKAIMEYWAgIAAAA8LIAEoAhhBgsbEgABBDCABQRxqKAIAKAIMEYWAgIAAAA8LIAEoAhhB98XEgABBCyABQRxqKAIAKAIMEYWAgIAAAA8LIAEoAhhB7MXEgABBCyABQRxqKAIAKAIMEYWAgIAAAA8LIAEoAhhBqcXEgABBBCABQRxqKAIAKAIMEYWAgIAAAAvSAgEDfyOAgICAAEEgayICJICAgIAAAkACQCAAKAIAIgMtAAANACABKAIYQZLGxIAAQQQgAUEcaigCACgCDBGFgICAAAAhAQwBC0EBIQAgAiADQQFqNgIMIAIgASgCGEGOxsSAAEEEIAFBHGooAgAoAgwRhYCAgAAAOgAYIAIgATYCECACQQA6ABkgAkEANgIUIAJBEGogAkEMakG8rMSAABDekICAACEDIAItABghAQJAAkAgAigCFCIEDQAgASEADAELIAFB/wFxDQAgAygCACEBAkAgBEEBRw0AIAItABlB/wFxRQ0AIAEtAABBBHENAEEBIQAgASgCGEG4rMSAAEEBIAFBHGooAgAoAgwRhYCAgAAADQELIAEoAhhBj6nEgABBASABQRxqKAIAKAIMEYWAgIAAACEACyAAQf8BcUEARyEBCyACQSBqJICAgIAAIAELEgAgAUHwr8SAAEECELqQgIAACxIAIAAoAgAtAAAgARClkYCAAAueAgECfyOAgICAAEEQayICJICAgIAAIAIgADYCACACIABBBGo2AgQgASgCGEGtxsSAAEEJIAFBHGooAgAoAgwRhYCAgAAAIQAgAkEAOgAN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biBmYWlsZWQ6IHNyYy5sZW4oKSA9PSBkc3QubGVuKCkgABAAWwAAANQGAAAFAAAAIAAQAFsAAABWBAAAFgAAACAAEABbAAAAlgQAABYAAABhc3NlcnRpb24gZmFpbGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLm5vZGUuaGVpZ2h0IC0gMQAAACAAEABbAAAArAMAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBvbGRfcmlnaHRfbGVuICsgY291bnQgPD0gQ0FQQUNJVFkAIAAQAFsAAACDBQAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9sZF9sZWZ0X2xlbiA+PSBjb3VudAAgABAAWwAAAIQFAAANAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZSAAEABbAAAAswUAABYAAABhc3NlcnRpb24gZmFpbGVkOiBvbGRfbGVmdF9sZW4gKyBjb3VudCA8PSBDQVBBQ0lUWQAAIAAQAFsAAADCBQAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9sZF9yaWdodF9sZW4gPj0gY291bnQgABAAWwAAAMMFAAANAAAAIAAQAFsAAADzBQAAFgAAAGFzc2VydGlvbiBmYWlsZWQ6IG1hdGNoIHRyYWNrX2VkZ2VfaWR4IHtcbiAgICBMZWZ0T3JSaWdodDo6TGVmdChpZHgpID0+IGlkeCA8PSBvbGRfbGVmdF9sZW4sXG4gICAgTGVmdE9yUmlnaHQ6OlJpZ2h0KGlkeCkgPT4gaWR4IDw9IHJpZ2h0X2xlbixcbn0AAAAgABAAWwAAAFUFAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogbmV3X2xlZnRfbGVuIDw9IENBUEFDSVRZAAAgABAAWwAAAAgFAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogbGVuID4gMAAAACAAEABbAAAAYgEAAAkAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlL3J1c3RjLzYyODQ5OThhMjY3N2Q3ZTNlODQyMGRiNzgzZjNhYTRmZDgwZDc0MjMvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMAAIcEEABfAAAATAIAAA0AAACHBBAAXwAAAAoCAAAWAAAAUmVzcG9uc2VhdHRyaWJ1dGVzZXZlbnRzSW52YWxpZCBlZDI1NTE5IHB1YmxpYyBrZXkgbGVuZ2h0OiAAIAUQACMAAAAvaG9tZS92dW9uZy9jZW50YXVyaS9saWdodC1jbGllbnRzL2ljczEwLWdyYW5kcGEvc3JjL2NsaWVudF9zdGF0ZS5yczEwLWdyYW5kcGEvaWJjLmxpZ2h0Y2xpZW50cy5ncmFuZHBhLnYxLkNsaWVudFN0YXRlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAAABAAAAAUAAAABAAAABEAAABMBRAARAAAAGwAAAAUAAAAL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvZmluYWxpdHktZ3JhbmRwYS0wLjE2LjEvc3JjL3ZvdGVfZ3JhcGgucnNub2RlIGNvbnRhaW5pbmcgbm9uLW5vZGUgaW4gaGlzdG9yeSBhbHdheXMgaGFzIGFuY2VzdG9yOyBxZWQAAAAQBhAAZQAAADgBAAAkAAAAbm9kZSBlaXRoZXIgYmFzZSBvciByZWZlcmVuY2VkIGJ5IG90aGVyIGluIGdyYXBoOyBxZWQAAAAQBhAAZQAAAC4BAAANAAAAYWxsIGNoaWxkcmVuIGluIGdyYXBoOyBxZWQAABAGEABlAAAA8AAAACEAAAAQBhAAZQAAAPkAAAAhAAAAYnkgZGVmbiBvZiBmaW5kX2NvbnRhaW5pbmdfbm9kZXM7IHFlZAAAABAGEABlAAAA1wAAABkAAABQcmlvciBhbmNlc3RvciBpcyByZWZlcmVuY2VkIGZyb20gYSBub2RlOyBxZWR0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgaW52b2tlZCB3aGVuIHRoZXJlIGlzIG5vIGVudHJ5IGZvciB0aGUgYW5jZXN0b3IgYWxyZWFkeTsgcWVkAK0HEABSAAAAEAYQAGUAAAAjAgAADQAAABAGEABlAAAAGgIAACoAAAB0aGlzIGZ1bmN0aW9uIG9ubHkgaW52b2tlZCB3aXRoIGtleXMgb2Ygdm90ZS1ub2RlczsgcWVkdGhpcyBmdW5jdGlvbiBvbmx5IGludm9rZWQgd2l0aCBkaXJlY3QgYW5jZXN0b3JzOyBxZWRfCBAANQAAABAGEABlAAAAAAIAABUAAAAQBhAAZQAAAPEBAAAZAAAAYmFzZSBpcyBrZXB0OyBjaGFpbiByZXR1cm5zIGFuY2VzdHJ5IG9ubHkgaWYgdGhlIGJsb2NrIGlzIGEgZGVzY2VuZGVudCBvZiBiYXNlOyBxZWQAEAYQAGUAAAA+AgAAHQAAABAGEABlAAAAOQIAAB4AAAB2b3RlLW5vZGUgYW5kIGl0cyBhbmNlc3RyeSBhbHdheXMgZXhpc3QgYWZ0ZXIgaW5pdGlhbCBwaGFzZTsgcWVkEAYQAGUAAAC5AAAAIAAAAGludmFsaWQgY29tbWl0bWVudCByb290IGxlbmd0aDoggAkQACAAAABGYWlsZWQgdG8gdmVyaWZ5IHByb29mIGZvciBwYXRoOiAsIGVycm9yOiAAAKgJEAAhAAAAyQkQAAkAAAAAAAAAIAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAwAAAAEAAAAgAAAABAAAAAIAAAAAAAAAAgAAAAAAAAADAAAARmFpbGVkIHRvIGRlY29kZSBwcm9vZiBub2RlcyBmb3IgcGF0aDogOiAAAAAkChAAJwAAAEsKEAACAAAAEgAAAAwAAAAEAAAAEwAAABQAAAAVAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQAWAAAAAAAAAAEAAAAXAAAAL3J1c3RjLzYyODQ5OThhMjY3N2Q3ZTNlODQyMGRiNzgzZjNhYTRmZDgwZDc0MjMvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAMAKEABLAAAA6AkAAAkAAAAWAAAABAAAAAQAAAAYAAAAFgAAAAQAAAAEAAAAGQAAAGJ1ZmZlciB1bmRlcmZsb3dkZWxpbWl0ZWQgbGVuZ3RoIGV4Y2VlZGVkcmVjdXJzaW9uIGxpbWl0IHJlYWNoZWR1bmV4cGVjdGVkIGVuZCBncm91cCB0YWdpbnZhbGlkIGtleSB2YWx1ZTogAJQLEAATAAAAaW52YWxpZCB0YWcgdmFsdWU6IDAvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9wcm9zdC0wLjExLjYvc3JjL2VuY29kaW5nLnJzaW52YWxpZCB2YXJpbnRhc3NlcnRpb24gZmFpbGVkOiBieXRlcy5sZW4oKSA+IDEwIHx8IGJ5dGVzW2J5dGVzLmxlbigpIC0gMV0gPCAweDgwAAAAxAsQAFgAAABVAAAABQAAAEludmFsaWRIYXNoABYAAAAEAAAABAAAABoAAAAWAAAABAAAAAQAAAAbAAAARGVjb2RlckVycm9yFgAAAAQAAAAEAAAAHAAAAFZhbHVlQXRJbmNvbXBsZXRlS2V5SW5jb21wbGV0ZURhdGFiYXNlSW52YWxpZFN0YXRlUm9vdGFja3MvcG9ydHMvL2NoYW5uZWxzLy9zZXF1ZW5jZXMvAAD+DBAACwAAAAkNEAAKAAAAEw0QAAsAAABwb3J0cy8AADgNEAAGAAAACAgQAAAAAABuZXh0U2VxdWVuY2VBY2svcG9ydHMvAABQDRAAFgAAAAkNEAAKAAAAaW52YWxpZCB3aXJlIHR5cGUgdmFsdWU6IAAAAHgNEAAZAAAAcmVjZWlwdHMvcG9ydHMvAJwNEAAPAAAACQ0QAAoAAAATDRAACwAAAG5leHRTZXF1ZW5jZVJlY3YvcG9ydHMvAMQNEAAXAAAACQ0QAAoAAABuZXh0U2VxdWVuY2VTZW5kL3BvcnRzLwDsDRAAFwAAAAkNEAAKAAAAY2xpZW50cy8vY2xpZW50VHlwZQAUDhAACAAAABwOEAALAAAAY2hhbm5lbEVuZHMvcG9ydHMvAAA4DhAAEgAAAAkNEAAKAAAAL2NsaWVudFN0YXRlFA4QAAgAAABcDhAADAAAAGNvbW1pdG1lbnRzL3BvcnRzLwAAeA4QABIAAAAJDRAACgAAABMNEAALAAAAY29ubmVjdGlvbnMvpA4QAAwAAAAvAAAACAgQAAAAAAC4DhAAAQAAALgOEAABAAAAdXBncmFkZWRJQkNTdGF0ZdQOEAAQAAAAdXBncmFkZWRDb25zU3RhdGUAAADsDhAAEQAAAHVwZ3JhZGVkQ2xpZW50AAAIDxAADgAAAHJlbGF5X2NoYWlubGF0ZXN0X3JlbGF5X2hlaWdodGxhdGVzdF9yZWxheV9oYXNoZnJvemVuX2hlaWdodGxhdGVzdF9wYXJhX2hlaWdodHBhcmFfaWRjdXJyZW50X3NldF9pZGN1cnJlbnRfYXV0aG9yaXRpZXNfcGhhbnRvbQAAIA8QAAsAAAArDxAAEwAAAD4PEAARAAAATw8QAA0AAABcDxAAEgAAAG4PEAAHAAAAdQ8QAA4AAACDDxAAEwAAAJYPEAAIAAAAFgAAAAQAAAAEAAAAHQAAABYAAAAEAAAABAAAAB4AAAAWAAAABAAAAAQAAAAfAAAAFgAAAAQAAAAEAAAAIAAAABYAAAAEAAAABAAAACEAAAAWAAAABAAAAAQAAAAiAAAAQ2xpZW50U3RhdGVVbmFsbG93ZWQgZW5jb2RpbmcvY29ubmVjdGlvbnMAAAAUDhAACAAAAGUQEAAMAAAAL2NvbnNlbnN1c1N0YXRlcy8tAAAUDhAACAAAAIQQEAARAAAAlRAQAAEAAABibG9ja3RyYW5zYWN0aW9uY29udHJhY3RoZWlnaHR0aW1lY2hhaW5faWRzZW5kZXJmdW5kc2FkZHJlc3NpbmRleFN1Yk1zZ2lkbXNnZ2FzX2xpbWl0cmVwbHlfb25SZXBseU9ubmV2ZXJzdWNjZXNzZXJyb3JhbHdheXNFcnJvciBkZWNvZGluZyBUaW1lc3RhbXAsIHRpbWVzdGFtcCBjYW5ub3QgYmUgemVybwAAACsREAAyAAAASW52YWxpZCBzdGF0ZSBwcm9vZiBmb3IgcGFyYWNoYWluIGhlYWRlcmgREAAoAAAAcmV2aXNpb25fbnVtYmVycmV2aXNpb25faGVpZ2h0AAAlAAAAYAAAAAgAAAAmAAAAJwAAACgAAAAMAAAABAAAACkAAAAqAAAAL2hvbWUvdnVvbmcvY2VudGF1cmkvbGlnaHQtY2xpZW50cy9jb21tb24vc3JjL3N0YXRlX21hY2hpbmUucnMAAOAREAA+AAAAPQAAABsAAABIZWlnaHQAACsAAAAMAAAABAAAACwAAAAtAAAAFQAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAKAAAAAAAAAABAAAAFwAAAC9ydXN0Yy82Mjg0OTk4YTI2NzdkN2UzZTg0MjBkYjc4M2YzYWE0ZmQ4MGQ3NDIzL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwCYEhAASwAAAOgJAAAJAAAAKAAAAAQAAAAEAAAAIAAAAGludmFsaWQga2V5IHZhbHVlOiAABBMQABMAAABpbnZhbGlkIHRhZyB2YWx1ZTogMGludmFsaWQgdmFyaW50aW52YWxpZCB3aXJlIHR5cGU6ICAoZXhwZWN0ZWQgKQAAAEITEAATAAAAVRMQAAsAAABgExAAAQAAAEhlYWRlcnBhcmFfaGVpZ2h0cGFyYWNoYWluX2hlYWRlcnNmaW5hbGl0eV9wcm9vZnBhcmFfaWRBdXRob3JpdHl3ZWlnaHRwdWJsaWNfa2V5Q2xpZW50U3RhdGVjdXJyZW50X3NldF9pZGxhdGVzdF9yZWxheV9oZWlnaHRsYXRlc3RfcmVsYXlfaGFzaHJlbGF5X2NoYWluY3VycmVudF9hdXRob3JpdGllc2xhdGVzdF9wYXJhX2hlaWdodGZyb3plbl9oZWlnaHRNaXNiZWhhdmlvdXJmaXJzdF9maW5hbGl0eV9wcm9vZnNlY29uZF9maW5hbGl0eV9wcm9vZkZpbmFsaXR5UHJvb2Z1bmtub3duX2hlYWRlcnNqdXN0aWZpY2F0aW9uaW52YWxpZCB3aXJlIHR5cGUgdmFsdWU6IAAAAKQUEAAZAAAAL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdHJpZS1kYi0wLjI1LjEvc3JjL25vZGUucnMAAMgUEABWAAAAhwAAAB4AAABDb25zZW5zdXNTdGF0ZXRpbWVzdGFtcHJvb3RpbnZhbGlkIFVpbnQxMjggJycgLSBLFRAAEQAAAFwVEAAEAAAAUGFyYWNoYWluSGVhZGVyUHJvb2ZzZXh0cmluc2ljZXh0cmluc2ljX3Byb29mc3RhdGVfcHJvb2ZJbnZhbGlkUHJvb2ZDaGlsZFJvb3ROb3RGb3VuZFZhbHVlTWlzbWF0Y2hrZXkAAAAoAAAABAAAAAQAAAAuAAAAZXhwZWN0ZWQoAAAABAAAAAQAAAAvAAAAZ290VHJpZQAoAAAABAAAAAQAAAAwAAAAUGFyYWNoYWluSGVhZGVyV2l0aFJlbGF5SGFzaHBhcmFjaGFpbl9oZWFkZXJyZWxheV9oYXNob3V0IG9mIHJhbmdlIGRlY29kaW5nIENvbXBhY3Q8dTMyPmRhdGFjb2RlX2lkbGF0ZXN0X2hlaWdodENsaWVudFN0YXRlAHAWEAAEAAAAdBYQAAcAAAB7FhAADQAAAC9pYmMubGlnaHRjbGllbnRzLndhc20udjEuQ2xpZW50U3RhdGVDbGllbnRTdGF0ZTxBbnlDbGllbnRTdGF0ZT4gaXMgYWx3YXlzIHZhbGlkIGFuZCBjYW4gYmUgZW5jb2RlZCB0byBBbnkAADwAAAAUAAAABAAAABEAAAAvaG9tZS92dW9uZy9jZW50YXVyaS9saWdodC1jbGllbnRzL2ljczA4LXdhc20vc3JjL2NsaWVudF9zdGF0ZS5ycwAAACgXEABBAAAAlQAAABQAAABDb3VsZCBub3QgZGVjb2RlIGBEaWdlc3RJdGVtVHlwZWAsIHZhcmlhbnQgZG9lc24ndCBleGlzdENvdWxkIG5vdCBkZWNvZGUgYERpZ2VzdEl0ZW1UeXBlYCwgZmFpbGVkIHRvIHJlYWQgdmFyaWFudCBieXRlQ291bGQgbm90IGRlY29kZSBgRGlnZXN0Ojpsb2dzYENvdWxkIG5vdCBkZWNvZGUgYEhlYWRlcjo6cGFyZW50X2hhc2hgQ291bGQgbm90IGRlY29kZSBgSGVhZGVyOjpudW1iZXJgQ291bGQgbm90IGRlY29kZSBgSGVhZGVyOjpzdGF0ZV9yb290YENvdWxkIG5vdCBkZWNvZGUgYEhlYWRlcjo6ZXh0cmluc2ljc19yb290YENvdWxkIG5vdCBkZWNvZGUgYEhlYWRlcjo6ZGlnZXN0YGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAPQAAACAAAAAIAAAAOAAAAC9ob21lL3Z1b25nLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2Nvc213YXNtLXN0ZC0xLjIuMy9zcmMvZXhwb3J0cy5ycwAAAAQZEABdAAAAkQAAAA0AAAAEGRAAXQAAAHMAAAANAAAABBkQAF0AAADuAAAADQAAAENvdWxkIG5vdCBkZWNvZGUgYFB1YmxpYy4wYENvdWxkIG5vdCBkZWNvZGUgYFNpZ25hdHVyZS4wYAAAAD4AAAAMAAAABAAAAD8AAABAAAAAFQAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAQQAAAAAAAAABAAAAFwAAAC9ydXN0Yy82Mjg0OTk4YTI2NzdkN2UzZTg0MjBkYjc4M2YzYWE0ZmQ4MGQ3NDIzL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAwGhAASwAAAOgJAAAJAAAAQQAAAAQAAAAEAAAAQgAAAEEAAAAEAAAABAAAACAAAABpbnZhbGlkIGtleSB2YWx1ZTogAKwaEAATAAAAaW52YWxpZCB0YWcgdmFsdWU6IDBpbnZhbGlkIHZhcmludGludmFsaWQgd2lyZSB0eXBlOiAgKGV4cGVjdGVkICkAAADqGhAAEwAAAP0aEAALAAAACBsQAAEAAAByZWN1cnNpb24gbGltaXQgcmVhY2hlZGludmFsaWQgd2lyZSB0eXBlIHZhbHVlOiA7GxAAGQAAAENvbnNlbnN1c1N0YXRldGltZXN0YW1waW4gY2xpZW50IDogW2NsaWVudF9zdGF0ZV0gPj4gY2xpZW50X2lkID0gAAAAcxsQACoAAABpbiBjbGllbnQgOiBbY2xpZW50X3N0YXRlXSA+PiBhbnkgY2xpZW50X3N0YXRlOiCoGxAAMAAAAGluIGNsaWVudCA6IFtjb25zZW5zdXNfc3RhdGVdID4+IGhlaWdodCA9IAAA4BsQACoAAABpbiBjbGllbnQgOiBbY29uc2Vuc3VzX3N0YXRlXSA+PiBjb25zZW5zdXNfc3RhdGUgKHJhdyk6IBQcEAA4AAAAaW4gY2xpZW50IDogW2NvbnNlbnN1c19zdGF0ZV0gPj4gYW55IGNvbnNlbnN1cyBzdGF0ZSA9IABUHBAANwAAAGluIGNsaWVudCA6IFtzdG9yZV9jbGllbnRfc3RhdGVdaW4gY2xpZGVuIDogW3N0b3JlX2NsaWVudF9zdGF0ZV0gPj4gd2FzbSBjbGllbnQgc3RhdGUgKHJhdylpbiBjbGllbnQgOiBbc3RvcmVfY29uc2Vuc3VzX3N0YXRlXSA+PiBjbGllbnRfaWQgPSAsIGhlaWdodCA9IAAAAO8cEAAzAAAAIh0QAAsAAABpbiBjbGllbnQgOiBbc3RvcmVfY29uc2Vuc3VzX3N0YXRlXSA+PiB3YXNtIGNvbnNlbnN1cyBzdGF0ZSAocmF3KSA9IEAdEABEAAAAW2NsaWVudF9zdGF0ZV06IGVycm9yIGRlY29kaW5nIGNsaWVudCBzdGF0ZSBieXRlcyB0byBXYXNtQ29uc2Vuc3VzU3RhdGUgjB0QAEgAAABncmFuZHBhX2hlYWRlcl9oYXNoZXMAAADcHRAAFQAAAGdyYW5kcGFfaGVhZGVyX2hhc2hlc19zZXQAAAD8HRAAGQAAAGVycm9yIHNhdmluZyBoZWFkZXIgaGFzaGVzbGlnaHQtY2xpZW50cy9pY3MxMC1ncmFuZHBhLWN3L3NyYy9jb250ZXh0LnJzADoeEAAtAAAAYQAAAAkAAABlcnJvciBzYXZpbmcgaGFzaCB0byBzZXQ6IAAAeB4QABoAAABubyBjb25zZW5zdXMgc3RhdGUgZm91bmQgZm9yIGhlaWdodCAgYW5kIHByZWZpeCCcHhAAJAAAAMAeEAAMAAAAZXJyb3IgZGVjb2RpbmcgY29uc2Vuc3VzIHN0YXRlOiDcHhAAIAAAAG5vIGNsaWVudCBzdGF0ZSBmb3VuZCBmb3IgcHJlZml4IAAAAAQfEAAhAAAAZXJyb3IgZGVjb2RpbmcgY2xpZW50IHN0YXRlOiAAAAAwHxAAHQAAAG5vIGNsaWVudCBzdGF0ZSBmb3VuZCBmb3IgcHJlZml4ZXJyb3IgZW5jb2RpbmcgY2xpZW50IHN0YXRlOiAAAAB4HxAAHQAAAHJldmlzaW9uX251bWJlcnJldmlzaW9uX2hlaWdodGFscmVhZHkgYm9ycm93ZWQAAEMAAAAAAAAAAQAAAEQAAABDAAAABAAAAAQAAABFAAAAaW52YWxpZCBzdHJpbmcgdmFsdWU6IGRhdGEgaXMgbm90IFVURi04IGVuY29kZWRQaGFudG9tRGF0YTw+HyAQAAwAAAArIBAAAQAAAC9ob21lL3Z1b25nLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3RyaWUtZGItMC4yNS4xL3NyYy90cmllZGIucnM8IBAAWAAAAPIAAAA3AAAAPCAQAFgAAADzAAAAPQAAAEhlaWdodGNsaWVudFN0YXRlQ29pbmRlbm9tYW1vdW50ySAQAAUAAADOIBAABgAAAEVtcHR5SW52YWxpZCBlZDI1NTE5IHB1YmxpYyBrZXkA6SAQABoAAABub2RlIGVpdGhlciBiYXNlIG9yIHJlZmVyZW5jZWQgYnkgb3RoZXIgaW4gZ3JhcGg7IHFlZC9ob21lL3Z1b25nLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2ZpbmFsaXR5LWdyYW5kcGEtMC4xNi4xL3NyYy92b3RlX2dyYXBoLnJzAABBIRAAZQAAAC4BAAANAAAAZGVzY2VuZGVudHMgYWx3YXlzIHByZXNlbnQgaW4gbm9kZSBzdG9yYWdlOyBxZWQAQSEQAGUAAACBAQAAFgAAAGRlc2NyaXB0aW9uKCkgaXMgZGVwcmVjYXRlZDsgdXNlIERpc3BsYXlhc3NlcnRpb24gZmFpbGVkOiBtaWQgPD0gc2VsZi5sZW4oKWF0dGVtcHQgdG8gam9pbiBpbnRvIGNvbGxlY3Rpb24gd2l0aCBsZW4gPiB1c2l6ZTo6TUFYL3J1c3RjLzYyODQ5OThhMjY3N2Q3ZTNlODQyMGRiNzgzZjNhYTRmZDgwZDc0MjMvbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzeCIQAEgAAACwAAAAFgAAAHgiEABIAAAAlAAAABgAAAAvcnVzdGMvNjI4NDk5OGEyNjc3ZDdlM2U4NDIwZGI3ODNmM2FhNGZkODBkNzQyMy9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAA4CIQAEoAAAAhBAAAFQAAAOAiEABKAAAALwQAAB4AAADgIhAASgAAADgEAAAYAAAA4CIQAEoAAAA8BAAAGgAAAOAiEABKAAAAQgQAAA0AAADgIhAASgAAAEMEAAASAAAAaW52YWxpZCBrZXkgdmFsdWU6IACMIxAAEwAAAGludmFsaWQgdGFnIHZhbHVlOiAwL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvcHJvc3QtMC4xMS42L3NyYy9lbmNvZGluZy5yc2ludmFsaWQgdmFyaW50YXNzZXJ0aW9uIGZhaWxlZDogYnl0ZXMubGVuKCkgPiAxMCB8fCBieXRlc1tieXRlcy5sZW4oKSAtIDFdIDwgMHg4MAAAALwjEABYAAAAVQAAAAUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAC9ob21lL3Z1b25nLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2Jhc2U2NC0wLjEzLjEvc3JjL2NodW5rZWRfZW5jb2Rlci5yc8gkEABgAAAALQAAABoAAADIJBAAYAAAADcAAABEAAAAyCQQAGAAAAA6AAAAJwAAAC9ob21lL3Z1b25nLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2Jhc2U2NC0wLjEzLjEvc3JjL2VuY29kZS5ycwBYJRAAVwAAALYAAAAgAAAAWCUQAFcAAAC3AAAAJQAAAFglEABXAAAA/AAAABwAAABYJRAAVwAAAP0AAAAhAAAAWCUQAFcAAAATAQAALgAAAFglEABXAAAAEwEAAAkAAABYJRAAVwAAABQBAAAJAAAAWCUQAFcAAAALAQAALgAAAFglEABXAAAACwEAAAkAAABYJRAAVwAAAA0BAAAPAAAAWCUQAFcAAAAMAQAACQAAAFglEABXAAAADwEAAAkAAAAMIRAAAAAAAEFueXR5cGVfdXJsdmFsdWVpbnZhbGlkIHdpcmUgdHlwZSB2YWx1ZTogAAAAiCYQABkAAAAvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90cmllLWRiLTAuMjUuMS9zcmMvbm9kZS5ycwAArCYQAFYAAADaAAAAGQAAAKwmEABWAAAA6AAAABkAAAAvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90cmllLWRiLTAuMjUuMS9zcmMvcHJvb2YvdmVyaWZ5LnJzdGhlIGJvdHRvbSBpdGVtIG9uIHRoZSBzdGFjayBoYXMgaXNfaW5saW5lID0gZmFsc2U7IHFlZAAAACQnEABeAAAA2AEAAB0AAAAkJxAAXgAAAM8BAAAVAAAAJCcQAF4AAACeAAAAFQAAAHRoZSBjaGlsZCBtdXN0IGJlIGNvbXBsZXRlZCBzaW5jZSBjaGlsZF9pbmRleCBpcyAxdmFsdWUg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ODlhYmNkZWYvcnVzdGMvNjI4NDk5OGEyNjc3ZDdlM2U4NDIwZGI3ODNmM2FhNGZkODBkNzQyMy9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAANC8QAEoAAACNAAAAEQAAAC9ydXN0Yy82Mjg0OTk4YTI2NzdkN2UzZTg0MjBkYjc4M2YzYWE0ZmQ4MGQ3NDIzL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9tb2QucnOQLxAATAAAAM4HAAAkAAAAQ29uc2Vuc3VzU3RhdGVkYXRhdGltZXN0YW1wL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYmxha2UyLXJmYy0wLjIuMTgvc3JjL2JsYWtlMmIucnMABzAQAFwAAAAlAAAAAQAAAPovEAAEAAAA/i8QAAkAAAAvaWJjLmxpZ2h0Y2xpZW50cy53YXNtLnYxLkNvbnNlbnN1c1N0YXRlQ29uc2Vuc3VzU3RhdGU8QW55Q29uc2Vuc3VzU3RhdGU+IGlzIGFsd2F5cyB2YWxpZCBhbmQgY2FuIGJlIGVuY29kZWQgdG8gQW55AH0AAAAUAAAABAAAABEAAAAvaG9tZS92dW9uZy9jZW50YXVyaS9saWdodC1jbGllbnRzL2ljczA4LXdhc20vc3JjL2NvbnNlbnN1c19zdGF0ZS5ycwgxEABEAAAAWAAAABQAAABDb3VsZCBub3QgZGVjb2RlIGBQcmVjb21taXQ6OnRhcmdldF9oYXNoYENvdWxkIG5vdCBkZWNvZGUgYFByZWNvbW1pdDo6dGFyZ2V0X251bWJlcmBDb3VsZCBub3QgZGVjb2RlIGBDb21taXQ6OnRhcmdldF9oYXNoYENvdWxkIG5vdCBkZWNvZGUgYENvbW1pdDo6dGFyZ2V0X251bWJlcmBDb3VsZCBub3QgZGVjb2RlIGBDb21taXQ6OnByZWNvbW1pdHNgQ291bGQgbm90IGRlY29kZSBgU2lnbmVkUHJlY29tbWl0OjpwcmVjb21taXRgQ291bGQgbm90IGRlY29kZSBgU2lnbmVkUHJlY29tbWl0OjpzaWduYXR1cmVgQ291bGQgbm90IGRlY29kZSBgU2lnbmVkUHJlY29tbWl0OjppZGBmYWlsZWQgdG8gZGVjb2RlIENvbnNlbnN1c1N0YXRlOjpkYXRhIGludG8gQW55OiAAozIQADAAAAB+AAAADAAAAAQAAAB/AAAAgAAAABUAAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5AIEAAAAAAAAAAQAAABcAAAAvcnVzdGMvNjI4NDk5OGEyNjc3ZDdlM2U4NDIwZGI3ODNmM2FhNGZkODBkNzQyMy9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAPDMQAEsAAADoCQAACQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IAAAmDMQACoAAACBAAAABAAAAAQAAACCAAAAgwAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUvcnVzdGMvNjI4NDk5OGEyNjc3ZDdlM2U4NDIwZGI3ODNmM2FhNGZkODBkNzQyMy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9tYXAvZW50cnkucnMACzQQAGAAAAB1AQAAIAAAAAs0EABgAAAAMAIAABgAAABgbGVuYCBncmVhdGVyIHRoYW4gcmVtYWluaW5nL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYnl0ZXMtMS40LjAvc3JjL2J1Zi9idWZfaW1wbC5ycwCoNBAAWwAAAFIEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5yZW1haW5pbmcoKSA+PSAxAKg0EABbAAAAIQEAAAkAAACoNBAAWwAAAEoFAAASAAAAY2Fubm90IGFkdmFuY2UgcGFzdCBgcmVtYWluaW5nYDogIDw9IAAAAFw1EAAhAAAAfTUQAAQAAAAvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ieXRlcy0xLjQuMC9zcmMvYnl0ZXMucnOUNRAAVAAAACUCAAAJAAAAL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdHJpZS1kYi0wLjI1LjEvc3JjL2xvb2t1cC5yc/g1EABYAAAAQAAAAB4AAACBAAAADAAAAAQAAACEAAAAhQAAAFdlIGFyZSBjYWNoaW5nIGEgYE5vZGVPd25lZDo6VmFsdWVgIGZvciBhIHZhbHVlIG5vZGUgaGFzaCBhbmQgdGhpcyBjYWNoZWQgbm9kZSBoYXMgYWx3YXlzIGRhdGEgYXR0YWNoZWQ7IHFlZPg1EABYAAAAawAAAB0AAAD4NRAAWAAAAHECAAAsAAAA+DUQAFgAAABMAgAALAAAAIEAAAAUAAAABAAAAIYAAACHAAAAYE5vZGVPd25lZDo6VmFsdWVgIGNhbiBub3QgYmUgcmVhY2hlZCBieSB1c2luZyB0aGUgaGFzaCBvZiBhIG5vZGUuIGBOb2RlT3duZWQ6OlZhbHVlYCBpcyBvbmx5IGNvbnN0cnVjdGVkIHdoZW4gbG9hZGluZyBhIHZhbHVlIGludG8gbWVtb3J5LCB3aGljaCBuZWVkcyB0byBoYXZlIGEgZGlmZmVyZW50IGhhc2ggdGhhbiBhbnkgbm9kZTsgcWVkACQ3EADDAAAA+DUQAFgAAADYAQAAGQAAAPg1EABYAAAAxAEAAC0AAAD4NRAAWAAAAJ4BAAAtAAAAmDMQAAAAAABrZXkgaXMgYWx3YXlzIHZhbGlkOyBxZWSBAAAAAQAAAAEAAACIAAAAbGlnaHQtY2xpZW50cy9pY3MxMC1ncmFuZHBhLWN3L3NyYy9jb250cmFjdC5ycwAAUDgQAC4AAABlAAAADQAAAFA4EAAuAAAAZAAAABcAAABzdWJqZWN0IGNsaWVudCBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBzdWJzdGl0dXRlIGNsaWVudCBzdGF0ZUNvdWxkIG5vdCBmaW5kIHRoZSBrbm93biBoZWFkZXIgZm9yIGZpcnN0IGZpbmFsaXR5IHByb29mVW5rbm93biBoZWFkZXJzIGNhbid0IGJlIGVtcHR5IVt1cGRhdGVfc3RhdGVdIEludmFsaWQgYW5jZXN0cnkhU3RvcmluZyBjb25zZW5zdXMgc3RhdGU6IABSORAAGQAAAFN0b3JpbmcgY2xpZW50IHN0YXRlIHdpdGggaGVpZ2h0OiAAAHQ5EAAiAAAAMDgtd2FzbS0wY2xpZW50IGlkIGlzIHZhbGlkAIkAAAAgAAAABAAAAIoAAABQOBAALgAAAIgAAAAVAAAAUDgQAC4AAABeAQAAFQAAAFVua25vd25Gcm96ZW5FeHBpcmVkQWN0aXZlbm90IGltcGxlbWVudGVkOiAABjoQABEAAABHZXRMYXRlc3RIZWlnaHRzTXNnACA6EAATAAAAUDgQAC4AAABhAQAALQAAAENsaWVudFR5cGVNc2cAAABMOhAADQAAAFA4EAAuAAAAYAEAACcAAABGcm9tIFVURjggZXJyb3I6IAAAAHQ6EAARAAAAUHJvdG8gZGVjb2RlIGVycm9yOiCQOhAAFAAAAElCQyBjb21taXRtZW50IGVycm9yOiAAAKw6EAAWAAAASUJDIHByb29mIGVycm9yOiAAAADMOhAAEQAAAElCQyBwYXRoIGVycm9yOiDoOhAAEAAAAElCQyB2YWxpZGF0aW9uIGVycm9yOiAAAAA7EAAWAAAAUHJvdG9idWYgZXJyb3I6ICA7EAAQAAAAR3JhbmRwYSBlcnJvcjogADg7EAAPAAAAU3RvcmFnZSBlcnJvcgAAAFA7EAANAAAAVW5hdXRob3JpemVkaDsQAAwAAABkZW5vbWFtb3VudGJsb2NrdHJhbnNhY3Rpb25jb250cmFjdGhlaWdodHRpbWVjaGFpbl9pZHNlbmRlcmZ1bmRzYWRkcmVzc2luZGV4cmV2aXNpb25fbnVtYmVycmV2aXNpb25faGVpZ2h0ZGF0YXRpbWVzdGFtcGxhdGVzdF9oZWlnaHRjb2RlX2lkdWxsY2xpZW50X3N0YXRlY29uc2Vuc3VzX3N0YXRla2V5X3BhdGhwYXRoZGVsYXlfYmxvY2tfcGVyaW9kZGVsYXlfdGltZV9wZXJpb2R2YWx1ZXByb29mY2xpZW50X21lc3NhZ2V1cGdyYWRlX2NsaWVudF9zdGF0ZXVwZ3JhZGVfY29uc2Vuc3VzX3N0YXRlcHJvb2ZfdXBncmFkZV9jb25zZW5zdXNfc3RhdGVwcm9vZl91cGdyYWRlX2NsaWVudGRhdGFoZWlnaHRIZWFkZXLIPBAABAAAAMw8EAAGAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogAADoPBAAKgAAADAyLWNsaWVudCB3aWxsIGNoZWNrIGZvciBtaXNiZWhhdmlvdXIgYmVmb3JlIGNhbGxpbmcgdXBkYXRlX3N0YXRlOyBxZWQAABw9EABGAAAAL2hvbWUvdnVvbmcvY2VudGF1cmkvbGlnaHQtY2xpZW50cy9pY3MxMC1ncmFuZHBhL3NyYy9jbGllbnRfZGVmLnJzAABsPRAAQgAAANcAAAASAAAAjgAAABgAAAAEAAAAjwAAAEFueUNvbnNlbnVzU3RhdGUgaXMgdHlwZSBjaGVja2VkOyBxZWQAAABsPRAAQgAAAP0AAAAbAAAAdGFyZ2V0IGhlYWRlciBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQgaW4gdmVyaWZ5X2NsaWVudF9tZXNzYWdlOyBxZWRMaWdodCBjbGllbnQgY2FuIG9ubHkgYmUgdXBkYXRlZCB0byBuZXcgcmVsYXkgY2hhaW4gaGVpZ2h0LkxpZ2h0IGNsaWVudCBjYW4gb25seSBiZSB1cGRhdGVkIHRvIG5ldyBwYXJhY2hhaW4gaGVpZ2h0Lmw9EABCAAAAAwEAABYAAABObyByZWxheSBjaGFpbiBoZWFkZXIgZm91bmQgZm9yIGhhc2g6IAAA0D4QACYAAABbdXBkYXRlX3N0YXRlXSBJbnZhbGlkIGFuY2VzdHJ5IU1pc2JlaGF2aW91ciBwcm9vZnMgYXJlIGZvciB0aGUgc2FtZSBibG9ja01pc2JlaGF2aW91ciBwcm9vZnMgYXJlIG5vdCBmb3IgdGhlIHNhbWUgY2hhaW5NaXNiZWhhdmlvdXIgcHJvb2ZzIGFyZSBub3QgZm9yIHRoZSBzYW1lIGFuY2VzdG9yRmlyc3Qgb3Igc2Vjb25kIGZpbmFsaXR5IHByb29mIGJsb2NrIGhhc2ggZG9lcyBub3QgbWF0Y2gganVzdGlmaWNhdGlvbiB0YXJnZXQgaGFzaEludmFsaWQganVzdGlmaWNhdGlvblBhcmEgaWQgbWlzbWF0Y2g6IGV4cGVjdGVkICwgZ290IAAAABBAEAAbAAAAK0AQAAYAAABVbmtub3duIGhlYWRlcnMgY2FuJ3QgYmUgZW1wdHkhSW52YWxpZCBhbmNlc3RyeSFDb3VsZCBub3QgZGVjb2RlIHNlY29uZCBqdXN0aWZpY2F0aW9uQ291bGQgbm90IGRlY29kZSBmaXJzdCBqdXN0aWZpY2F0aW9uAAAAkAAAAGAAAAAIAAAAkQAAAEFueUNvbnNlbnN1c1N0YXRlIGlzIHR5cGUtY2hlY2tlZDsgcWVkY2xpZW50LXN0YXRlLXVwZ3JhZGUtcGF0aEludmFsaWQgcHJvb2YgZm9yIGNsaWVudCBzdGF0ZSB1cGdyYWRlY29uc2Vuc3VzLXN0YXRlLXVwZ3JhZGUtcGF0aAAAAGw9EABCAAAAugEAABEAAABsPRAAQgAAAKMBAAAbAAAAbD0QAEIAAACHAQAAGwAAAFdyb25nIGNvbnNlbnN1cyBzdGF0ZSB0eXBlIHN0b3JlZCBmb3IgR3JhbmRwYSBjbGllbnQgd2l0aCAgYXQgAACEQRAAOgAAAL5BEAAEAAAAbD0QAAAAAAAvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9maW5hbGl0eS1ncmFuZHBhLTAuMTYuMS9zcmMvdm90ZXJfc2V0LnJzbm9uemVybyArIG5vbnplcm8gaXMgbm9uemVyb9xBEABkAAAATQAAACEAAAB2b3RlcnMgbm9uZW1wdHk7IHFlZNxBEABkAAAAYgAAABwAAABDb3VsZCBub3QgZGVjb2RlIGBDb25zZW5zdXNMb2c6OlNjaGVkdWxlZENoYW5nZS4wYENvdWxkIG5vdCBkZWNvZGUgYENvbnNlbnN1c0xvZzo6Rm9yY2VkQ2hhbmdlLjBgQ291bGQgbm90IGRlY29kZSBgQ29uc2Vuc3VzTG9nOjpGb3JjZWRDaGFuZ2UuMWBDb3VsZCBub3QgZGVjb2RlIGBDb25zZW5zdXNMb2c6Ok9uRGlzYWJsZWQuMGBDb3VsZCBub3QgZGVjb2RlIGBDb25zZW5zdXNMb2c6OlBhdXNlLjBgQ291bGQgbm90IGRlY29kZSBgQ29uc2Vuc3VzTG9nOjpSZXN1bWUuMGBDb3VsZCBub3QgZGVjb2RlIGBDb25zZW5zdXNMb2dgLCB2YXJpYW50IGRvZXNuJ3QgZXhpc3RDb3VsZCBub3QgZGVjb2RlIGBDb25zZW5zdXNMb2dgLCBmYWlsZWQgdG8gcmVhZCB2YXJpYW50IGJ5dGVDb3VsZCBub3QgZGVjb2RlIGBTY2hlZHVsZWRDaGFuZ2U6Om5leHRfYXV0aG9yaXRpZXNgQ291bGQgbm90IGRlY29kZSBgU2NoZWR1bGVkQ2hhbmdlOjpkZWxheWAAAACSAAAABAAAAAQAAACTAAAAlAAAAJUAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlL3J1c3RjLzYyODQ5OThhMjY3N2Q3ZTNlODQyMGRiNzgzZjNhYTRmZDgwZDc0MjMvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMAALNEEABfAAAAugAAABUAAACzRBAAXwAAAJUAAAASAAAAVGltZXN0YW1wc2Vjb25kc25hbm9zAEludmFsaWQgUHJvb2YASkUQAA0AAABDb3VsZG4ndCBmaW5kIGNoaWxkIHJvb3QgaW4gcHJvb2YAAABgRRAAIQAAAEVycm9yIHZlcmlmeWluZyBrZXk6ICwgRXhwZWN0ZWQ6ICwgR290OiCMRRAAFQAAAKFFEAAMAAAArUUQAAcAAABUcmllIEVycm9yOiDMRRAADAAAAP//////////Q29zbW9zTXNnd2FzbWN1c3RvbWJhbmtCYW5rTXNnYnVybmFtb3VudHNlbmR0b19hZGRyZXNzV2FzbU1zZ2NsZWFyX2FkbWluY29udHJhY3RfYWRkcnVwZGF0ZV9hZG1pbmFkbWlubWlncmF0ZW5ld19jb2RlX2lkbXNnaW5zdGFudGlhdGVjb2RlX2lkZnVuZHNsYWJlbGV4ZWN1dGVlcnJvcm9rRXZlbnR0eXBlYXR0cmlidXRlc0F0dHJpYnV0ZWtleXZhbHVlL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvY3ctc3RvcmFnZS1wbHVzLTAuMTUuMS9zcmMvcGF0aC5ycwCxRhAAXgAAACkAAAAOAAAATGF0ZXN0IGZpbmFsaXplZCBibG9jayBzaG91bGQgYmUgaGlnaGVzdCBibG9jayBpbiB1bmtub3duX2hlYWRlcnMAAAAgRxAAQQAAAEp1c3RpZmljYXRpb24gdGFyZ2V0IGhhc2ggYW5kIGZpbmFsaXR5IHByb29mIGJsb2NrIGhhc2ggbWlzbWF0Y2hsRxAAQAAAAEhlYWRlcnMgaGF2ZSBiZWVuIGNoZWNrZWQgYnkgQW5jZXN0cnlDaGFpbjsgcWVkAAAAAAAvaG9tZS92dW9uZy9jZW50YXVyaS9hbGdvcml0aG1zL2dyYW5kcGEvdmVyaWZpZXIvc3JjL2xpYi5ycwDoRxAAOwAAAHAAAAANAAAATGF0ZXN0IHBhcmFjaGFpbiBoZWFkZXIgaGVpZ2h0IGRvZXNuJ3QgbWF0Y2ggdGhlIG9uZSBpbiB0aGUgcHJvb2YAAAA0SBAAQQAAAFt2ZXJpZnlfcGFyYWNoYWluX2hlYWRlcnNfd2l0aF9ncmFuZHBhX2ZpbmFsaXR5X3Byb29mXSBJbnZhbGlkIGFuY2VzdHJ5IChiYXNlIC0+IGxhdGVzdCByZWxheSBibG9jaykhAAAAgEgQAGUAAABJbnZhbGlkIHByb29mLCBwYXJhY2hhaW4gaGVhZGVyIG5vdCBmb3VuZAAAAPBIEAApAAAAVW5rbm93biBoZWFkZXJzIGNhbid0IGJlIGVtcHR5IQAkSRAAHwAAAGVycm9yIHZlcmlmeWluZyBwYXJhY2hhaW4gaGVhZGVyIHN0YXRlIHByb29mOiAAAExJEAAuAAAAW3ZlcmlmeV9wYXJhY2hhaW5faGVhZGVyc193aXRoX2dyYW5kcGFfZmluYWxpdHlfcHJvb2ZdIEludmFsaWQgYW5jZXN0cnkhhEkQAEgAAABJbnZhbGlkIGV4dHJpbnNpYyBwcm9vZgDUSRAAFwAAAENvdWxkIG5vdCBkZWNvZGUgYEdyYW5kcGFKdXN0aWZpY2F0aW9uOjpyb3VuZGBDb3VsZCBub3QgZGVjb2RlIGBHcmFuZHBhSnVzdGlmaWNhdGlvbjo6Y29tbWl0YENvdWxkIG5vdCBkZWNvZGUgYEdyYW5kcGFKdXN0aWZpY2F0aW9uOjp2b3Rlc19hbmNlc3RyaWVzYEZSTktKdXN0aWZpY2F0aW9uIE1lc3NhZ2UgjkoQABYAAABwYWxsZXRfaWJjZ3JhbmRwYV9saWdodF9jbGllbnRfcHJpbWl0aXZlczo6anVzdGlmaWNhdGlvbmFsZ29yaXRobXMvZ3JhbmRwYS9wcmltaXRpdmVzL3NyYy9qdXN0aWZpY2F0aW9uLnJzAACsShAACgAAALZKEAAuAAAA5EoQADIAAAD6AAAAaW52YWxpZCBzaWduYXR1cmUgZm9yIHByZWNvbW1pdCBpbiBncmFuZHBhIGp1c3RpZmljYXRpb240SxAAOAAAAEludmFsaWQgY29tbWl0LCBmb3VuZCBvbmUgb2YgYGR1cGxpY2F0ZSBwcmVjb21taXRzYCwgYGludmFsaWQgdm90ZXJzYCwgb3IgYGVxdWl2b2NhdGlvbnNgIAAAdEsQAFoAAABpbnZhbGlkIGNvbW1pdCBpbiBncmFuZHBhIGp1c3RpZmljYXRpb246IAAAANhLEAApAAAAY2FuIG9ubHkgZmFpbCBpZiBwcmVjb21taXRzIGlzIGVtcHR5OyBjb21taXQgaGFzIGJlZW4gdmFsaWRhdGVkIGFib3ZlOyB2YWxpZCBjb21taXRzIG11c3QgaW5jbHVkZSBwcmVjb21taXRzOyBxZWQuaW52YWxpZCBwcmVjb21taXQgYW5jZXN0cmllcyBpbiBncmFuZHBhIGp1c3RpZmljYXRpb24gd2l0aCB1bnVzZWQgaGVhZGVycwB+TBAASQAAAC9ob21lL3Z1b25nL2NlbnRhdXJpL2FsZ29yaXRobXMvZ3JhbmRwYS9wcmltaXRpdmVzL3NyYy9qdXN0aWZpY2F0aW9uLnJzANBMEABHAAAAYwAAABkAAABbdmVyaWZ5X3dpdGhfdm90ZXJfc2V0XSBJbnZhbGlkIGFuY2VzdHJ5IQAAAChNEAApAAAAW3ZlcmlmeV93aXRoX3ZvdGVyX3NldF0gSW52YWxpZCBhbmNlc3RyeSB3aGlsZSB2YWxpZGF0aW5nIGNvbW1pdCEAAABcTRAAQQAAAEludmFsaWQgQXV0aG9yaXRpZXNTZXQAAKhNEAAWAAAAKCkAAJoAAAAMAAAABAAAAJsAAACcAAAAFQAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAnQAAAAAAAAABAAAAFwAAAC9ydXN0Yy82Mjg0OTk4YTI2NzdkN2UzZTg0MjBkYjc4M2YzYWE0ZmQ4MGQ3NDIzL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAsThAASwAAAOgJAAAJAAAAaWNzMTBfZ3JhbmRwYV9jdzo6bXNnOjpDb250cmFjdFJlc3VsdGljczEwX2dyYW5kcGFfY3c6Om1zZzo6SW5zdGFudGlhdGVNc2dpY3MxMF9ncmFuZHBhX2N3Ojpjb250cmFjdDo6SG9zdEZ1bmN0aW9uc2FsbG9jOjp2ZWM6OlZlYzxwcmltaXRpdmVfdHlwZXM6OkgyNTY+Y29zbXdhc21fc3RkOjpyZXN1bHRzOjpjb250cmFjdF9yZXN1bHQ6OkNvbnRyYWN0UmVzdWx0PGNvc213YXNtX3N0ZDo6cmVzdWx0czo6cmVzcG9uc2U6OlJlc3BvbnNlPmljczEwX2dyYW5kcGFfY3c6Om1zZzo6UXVlcnlSZXNwb25zZWljczEwX2dyYW5kcGFfY3c6Om1zZzo6RXhlY3V0ZU1zZ2Nvc213YXNtX3N0ZDo6dHlwZXM6OkVudmNvc213YXNtX3N0ZDo6cmVzdWx0czo6Y29udHJhY3RfcmVzdWx0OjpDb250cmFjdFJlc3VsdDxjb3Ntd2FzbV9zdGQ6OmJpbmFyeTo6QmluYXJ5PmljczEwX2dyYW5kcGFfY3c6Om1zZzo6Q2xpZW50U3RhdGVDYWxsUmVzcG9uc2Vjb3Ntd2FzbV9zdGQ6OnR5cGVzOjpNZXNzYWdlSW5mb2ljczEwX2dyYW5kcGFfY3c6Om1zZzo6UXVlcnlNc2dkZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5aW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogAADIUBAAKgAAAC9ob21lL3Z1b25nLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Byb3N0LTAuMTEuNi9zcmMvZW5jb2RpbmcucnNpbnZhbGlkIHZhcmludGludmFsaWQgd2lyZSB0eXBlOiAgKGV4cGVjdGVkICkAAABiURAAEwAAAHVREAALAAAAgFEQAAEAAAD8UBAAWAAAAFUAAAAhAAAAYXNzZXJ0aW9uIGZhaWxlZDogYnl0ZXMubGVuKCkgPiAxMCB8fCBieXRlc1tieXRlcy5sZW4oKSAtIDFdIDwgMHg4MAD8UBAAWAAAAFUAAAAFAAAAYnVmZmVyIHVuZGVyZmxvd1RyaWVFcnJvcgAAAJ0AAAAEAAAABAAAADAAAABJbnZhbGlkUmVjb3JkaW5nnQAAAAQAAAAEAAAAGwAAAJ0AAAAEAAAABAAAAJ4AAABEZWNvZGUAAJ0AAAAEAAAABAAAAJ8AAABCYWRGb3JtYXQAAACgAAAAEAAAAAQAAAChAAAAoAAAABAAAAAEAAAAogAAAKEAAACAUhAAowAAAKQAAAClAAAApgAAAKcAAACdAAAACAAAAAQAAACoAAAAnQAAAAgAAAAEAAAAqQAAAKgAAAC8UhAAowAAAKoAAACrAAAArAAAAK0AAACuAAAAKAAAAAQAAACvAAAArgAAACgAAAAEAAAAsAAAAK8AAAD4UhAAowAAALEAAACyAAAAswAAALQAAACaAAAADAAAAAQAAAC1AAAAmgAAAAwAAAAEAAAAtgAAALUAAAA0UxAAowAAALcAAAC4AAAAuQAAALoAAAC7AAAALAAAAAQAAAC8AAAAuwAAACwAAAAEAAAAvQAAALwAAABwUxAAvgAAAL8AAADAAAAAvgAAAMEAAADCAAAAKAAAAAQAAAC8AAAAwgAAACgAAAAEAAAAvQAAALwAAACsUxAAvgAAAMMAAADAAAAAvgAAAMEAAADEAAAAMAAAAAQAAAC8AAAAxAAAADAAAAAEAAAAvQAAALwAAADoUxAAvgAAAMUAAADAAAAAvgAAAMEAAADGAAAASAAAAAQAAAC8AAAAxgAAAEgAAAAEAAAAvQAAALwAAAAkVBAAvgAAAMcAAADAAAAAvgAAAMEAAAAvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9iYXNlNjQtMC4xMy4xL3NyYy9kZWNvZGUucnMAYFQQAFcAAAAKAQAAJAAAAGBUEABXAAAACwEAACkAAABgVBAAVwAAADEBAAAWAAAAYFQQAFcAAAA0AQAAGgAAAGBUEABXAAAASAEAAA4AAABgVBAAVwAAAEsBAAASAAAAYFQQAFcAAABfAQAAEwAAAEltcG9zc2libGU6IG11c3Qgb25seSBoYXZlIDAgdG8gOCBpbnB1dCBieXRlcyBpbiBsYXN0IGNodW5rLCB3aXRoIG5vIGludmFsaWQgbGVuZ3RocyhVEABUAAAAYFQQAFcAAACkAQAADgAAAGBUEABXAAAAuAEAAAkAAABPdmVyZmxvdyB3aGVuIGNhbGN1bGF0aW5nIG91dHB1dCBidWZmZXIgbGVuZ3RoAABgVBAAVwAAAKIAAAAhAAAAYFQQAFcAAACaAAAAIAAAAGBUEABXAAAALgIAAAUAAABXcml0aW5nIHRvIGEgU3RyaW5nIHNob3VsZG4ndCBmYWlsAACdAAAAAAAAAAEAAADIAAAAL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYmFzZTY0LTAuMTMuMS9zcmMvZW5jb2RlLnJzADhWEABXAAAAUQAAAAkAAABDb3VsZCBub3QgZGVjb2RlIGBQdWJsaWMuMGBDb3VsZCBub3QgZGVjb2RlIGBTaWduYXR1cmUuMGBJbnZhbGlkIFByb29mAADZVhAADQAAAENvdWxkbid0IGZpbmQgY2hpbGQgcm9vdCBpbiBwcm9vZgAAAPBWEAAhAAAARXJyb3IgdmVyaWZ5aW5nIGtleTogLCBFeHBlY3RlZDogLCBHb3Q6IBxXEAAVAAAAMVcQAAwAAAA9VxAABwAAAFRyaWUgRXJyb3I6IFxXEAAMAAAASGFzaCB0YWJsZSBjYXBhY2l0eSBvdmVyZmxvd3BXEAAcAAAAL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvaGFzaGJyb3duLTAuMTIuMy9zcmMvcmF3L21vZC5ycwCUVxAAWwAAAFoAAAAoAAAAY2xpZW50U3RhdGUwOC13YXNtLTBbY2xpZW50X3N0YXRlXTogZXJyb3IgZGVjb2RpbmcgY2xpZW50IHN0YXRlIGJ5dGVzIHRvIFdhc21DbGllbnRTdGF0ZSAAAAAUWBAARQAAAGNvbnNlbnN1c1N0YXRlcy9sRxAAAAAAAEZyb20gVVRGOCBlcnJvcjogAAAAfFgQABEAAABQcm90byBkZWNvZGUgZXJyb3I6IJhYEAAUAAAASUJDIGNvbW1pdG1lbnQgZXJyb3I6IAAAtFgQABYAAABJQkMgcHJvb2YgZXJyb3I6IAAAANRYEAARAAAASUJDIHBhdGggZXJyb3I6IPBYEAAQAAAASUJDIHZhbGlkYXRpb24gZXJyb3I6IAAACFkQABYAAABQcm90b2J1ZiBlcnJvcjogKFkQABAAAABHcmFuZHBhIGVycm9yOiAAQFkQAA8AAABTdG9yYWdlIGVycm9yAAAAWFkQAA0AAABVbmF1dGhvcml6ZWRwWRAADAAAAGxpZ2h0LWNsaWVudHMvaWNzMTAtZ3JhbmRwYS1jdy9zcmMvbXNnLnJzAAAAhFkQACkAAADAAAAAKAAAAIRZEAApAAAA5QAAACgAAABHZW5lc2lzTWV0YWRhdGFrZXl2YWx1ZVF1ZXJ5UmVzcG9uc2VzdGF0dXNnZW5lc2lzX21ldGFkYXRhQ29udHJhY3RSZXN1bHRpc192YWxpZGVycm9yX21zZ2RhdGFmb3VuZF9taXNiZWhhdmlvdXJDbGllbnRTdGF0ZUNhbGxSZXNwb25zZWNsaWVudF9zdGF0ZW5ld19jb25zZW5zdXNfc3RhdGVuZXdfY2xpZW50X3N0YXRlcmVzdWx0SW5pdGlhbGl6ZVN0YXRlY29uc2Vuc3VzX3N0YXRlAAAAVloQAAwAAACaWhAADwAAAEluc3RhbnRpYXRlTXNnY2xpZW50X2NyZWF0ZV9yZXF1ZXN0aW5pdGlhbGl6ZV9zdGF0ZXZlcmlmeV9tZW1iZXJzaGlwdmVyaWZ5X25vbl9tZW1iZXJzaGlwdmVyaWZ5X2NsaWVudF9tZXNzYWdlY2hlY2tfZm9yX21pc2JlaGF2aW91cnVwZGF0ZV9zdGF0ZV9vbl9taXNiZWhhdmlvdXJ1cGRhdGVfc3RhdGVjaGVja19zdWJzdGl0dXRlX2FuZF91cGRhdGVfc3RhdGV2ZXJpZnlfdXBncmFkZV9hbmRfdXBkYXRlX3N0YXRl31oQABAAAADKWhAAFQAAAO9aEAARAAAAAFsQABUAAAAVWxAAFQAAACpbEAAWAAAAQFsQABwAAABcWxAADAAAAGhbEAAhAAAAiVsQAB8AAABjbGllbnRfdHlwZV9tc2dnZXRfbGF0ZXN0X2hlaWdodHNfbXNnZXhwb3J0X21ldGFkYXRh+FsQAA8AAAAHXBAAFgAAAB1cEAAPAAAA9FkQAAYAAABHZXRMYXRlc3RIZWlnaHRzTXNnQ2xpZW50VHlwZU1zZ1N0YXR1c01zZ0V4cG9ydE1ldGFkYXRhTXNna2V5X3BhdGgAAIZcEAAIAAAAVmVyaWZ5TWVtYmVyc2hpcE1zZ1Jhd3Byb29mcGF0aGhlaWdodGRlbGF5X2Jsb2NrX3BlcmlvZGRlbGF5X3RpbWVfcGVyaW9krlwQAAUAAACzXBAABAAAAOJZEAAFAAAAt1wQAAYAAAC9XBAAEgAAAM9cEAARAAAAVmVyaWZ5Tm9uTWVtYmVyc2hpcE1zZ1JhdwAAAK5cEAAFAAAAs1wQAAQAAAC3XBAABgAAAL1cEAASAAAAz1wQABEAAABXYXNtTWlzYmVoYXZpb3VyKVoQAAQAAABoZWFkZXJtaXNiZWhhdmlvdXIAAGxdEAAGAAAAcl0QAAwAAABWZXJpZnlDbGllbnRNZXNzYWdlUmF3Y2xpZW50X21lc3NhZ2WmXRAADgAAAENoZWNrRm9yTWlzYmVoYXZpb3VyTXNnUmF3VXBkYXRlU3RhdGVPbk1pc2JlaGF2aW91ck1zZ1Jhd1VwZGF0ZVN0YXRlTXNnUmF3Q2hlY2tTdWJzdGl0dXRlQW5kVXBkYXRlU3RhdGVNc2dSYXdWZXJpZnlVcGdyYWRlQW5kVXBkYXRlU3RhdGVNc2dSYXd1cGdyYWRlX2NsaWVudF9zdGF0ZXVwZ3JhZGVfY29uc2Vuc3VzX3N0YXRlcHJvb2ZfdXBncmFkZV9jbGllbnRwcm9vZl91cGdyYWRlX2NvbnNlbnN1c19zdGF0ZQAASl4QABQAAABeXhAAFwAAAHVeEAAUAAAAiV4QAB0AAAAvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90d294LWhhc2gtMS42LjMvc3JjL3NpeHR5X2ZvdXIucnMAAADIXhAAXQAAAI0AAAAKAAAAyF4QAF0AAACUAAAACQAAAC9ob21lL3Z1b25nLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2JsYWtlMi1yZmMtMC4yLjE4L3NyYy9ibGFrZTJiLnJzSF8QAFwAAAAlAAAAAQAAAGFzc2VydGlvbiBmYWlsZWQ6IG5uID49IDEgJiYgbm4gPD0gNjQgJiYga2sgPD0gNjRoYXNoIGRhdGEgbGVuZ3RoIG92ZXJmbG93SW52YWxpZFNsaWNlTGVuZ3RoSW52YWxpZFNpZ25hdHVyZU1hbGZvcm1lZFB1YmxpY0tleU1hbGZvcm1lZFNlY3JldEtleQAAAAAIybzzZ+YJajunyoSFrme7K/iU/nLzbjzxNh1f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b25nLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2N1cnZlMjU1MTktZGFsZWstMy4yLjAvc3JjL3dpbmRvdy5ycwCAEABgAAAAlQAAAAkAAAAAgBAAYAAAAMAAAAAJAAAAc3ViamVjdC+AgBAACAAAAHN1YnN0aXR1dGUvAJCAEAALAAAAb25seSBzdXBwb3J0cyBuYW1lc3BhY2VzIHVwIHRvIGxlbmd0aCAweEZGRkYvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9jdy1zdG9yYWdlLXBsdXMtMC4xNS4xL3NyYy9oZWxwZXJzLnJzAAAA0IAQAGEAAABWAAAACQAAAMkAAAAIAAAABAAAAMoAAADLAAAAzAAAAAgAAAAEAAAAzQAAAGVycm9ycmVxdWVzdHJlc3BvbnNlYWRkcmNvZGVfaWRraW5kAM8AAAAMAAAABAAAANAAAADRAAAA0gAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkA0wAAAAAAAAABAAAAFwAAAC9ydXN0Yy82Mjg0OTk4YTI2NzdkN2UzZTg0MjBkYjc4M2YzYWE0ZmQ4MGQ3NDIzL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwDsgRAASwAAAOgJAAAJAAAAY29zbXdhc21fc3RkOjpyZXN1bHRzOjpzeXN0ZW1fcmVzdWx0OjpTeXN0ZW1SZXN1bHQ8Y29zbXdhc21fc3RkOjpyZXN1bHRzOjpjb250cmFjdF9yZXN1bHQ6OkNvbnRyYWN0UmVzdWx0PGNvc213YXNtX3N0ZDo6YmluYXJ5OjpCaW5hcnk+PmludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IAAA0IIQACoAAABtaXNzaW5nIGZpZWxkIGBgBIMQAA8AAAATgxAAAQAAAGR1cGxpY2F0ZSBmaWVsZCBgAAAAJIMQABEAAAATgxAAAQAAAHVua25vd24gdmFyaWFudCBgYCwgZXhwZWN0ZWQgAAAASIMQABEAAABZgxAADAAAAGAsIHRoZXJlIGFyZSBubyB2YXJpYW50c0iDEAARAAAAeIMQABgAAABkZWNvZGVkIGxlbmd0aCBjYWxjdWxhdGlvbiBvdmVyZmxvdy9ob21lL3Z1b25nLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2Jhc2U2NC0wLjEzLjEvc3JjL2RlY29kZS5ycwAAw4MQAFcAAABuAAAAIwAAAMODEABXAAAACgEAACQAAADDgxAAVwAAAAsBAAApAAAAw4MQAFcAAAAxAQAAFgAAAMODEABXAAAANAEAABoAAADDgxAAVwAAAEgBAAAOAAAAw4MQAFcAAABLAQAAEgAAAMODEABXAAAAXwEAABMAAABJbXBvc3NpYmxlOiBtdXN0IG9ubHkgaGF2ZSAwIHRvIDggaW5wdXQgYnl0ZXMgaW4gbGFzdCBjaHVuaywgd2l0aCBubyBpbnZhbGlkIGxlbmd0aHOchBAAVAAAAMODEABXAAAApAEAAA4AAADDgxAAVwAAALgBAAAJAAAAT3ZlcmZsb3cgd2hlbiBjYWxjdWxhdGluZyBvdXRwdXQgYnVmZmVyIGxlbmd0aAAAw4MQAFcAAACaAAAAIAAAAMODEABXAAAALgIAAAUAAABJbnZhbGlkIFVURjjPAAAAFAAAAAQAAADUAAAAL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYmFzZTY0LTAuMTMuMS9zcmMvZW5jb2RlLnJzAISFEABXAAAANAAAAAUAAABpbnRlZ2VyIG92ZXJmbG93IHdoZW4gY2FsY3VsYXRpbmcgYnVmZmVyIHNpemUAAACEhRAAVwAAAC8AAAARAAAA0wAAAAAAAAABAAAA1QAAANYAAADWAAAAb2tlcnJvcgBEhhAAAgAAAEaGEAAFAAAAL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvY29zbXdhc20tc3RkLTEuMi4zL3NyYy9zZWN0aW9ucy5yc0Nhbm5vdCByZWFkIHNlY3Rpb24gbGVuZ3RouoYQABoAAABchhAAXgAAADcAAAAJAAAAUmVnaW9uIHBvaW50ZXIgaXMgbnVsbAAA7IYQABYAAAAvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9jb3Ntd2FzbS1zdGQtMS4yLjMvc3JjL21lbW9yeS5ycwyHEABcAAAAOQAAAAUAAABSZWdpb24gc3RhcnRzIGF0IG51bGwgcG9pbnRlcgAAAHiHEAAdAAAADIcQAFwAAAA/AAAABQAAAOAAAAAIAAAABAAAAOEAAADiAAAA4wAAAAwAAAAEAAAA5AAAAOUAAADSAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQDgAAAAAAAAAAEAAAAXAAAAL3J1c3RjLzYyODQ5OThhMjY3N2Q3ZTNlODQyMGRiNzgzZjNhYTRmZDgwZDc0MjMvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzACSIEABLAAAA6AkAAAkAAADgAAAACAAAAAQAAADmAAAAgIgQAAAAAABDb252ZXJzaW9uIGVycm9yOiAAAJiIEAASAAAARGl2aWRlIGJ5IHplcm86ILSIEAAQAAAAT3ZlcmZsb3c6IAAAzIgQAAoAAABFcnJvciBzZXJpYWxpemluZyB0eXBlIDogAAAA4IgQABcAAAD3iBAAAgAAAEVycm9yIHBhcnNpbmcgaW50byB0eXBlIAyJEAAYAAAA94gQAAIAAAAgbm90IGZvdW5kAACAiBAAAAAAADSJEAAKAAAAQ2Fubm90IGRlY29kZSBVVEY4IGJ5dGVzIGludG8gc3RyaW5nOiAAAFCJEAAmAAAASW52YWxpZCBoZXggc3RyaW5nOiCAiRAAFAAAAEludmFsaWQgZGF0YSBzaXplOiBleHBlY3RlZD0gYWN0dWFsPZyJEAAcAAAAuIkQAAgAAABJbnZhbGlkIEJhc2U2NCBzdHJpbmc6IADQiRAAFwAAAEdlbmVyaWMgZXJyb3I6IADwiRAADwAAAFJlY292ZXIgcHVia2V5IGVycm9yOiAAAAiKEAAWAAAAVmVyaWZpY2F0aW9uIGVycm9yOiAoihAAFAAAAENvbnZlcnNpb25PdmVyZmxvd3NvdXJjZeAAAAAEAAAABAAAAOcAAABEaXZpZGVCeVplcm/gAAAABAAAAAQAAADoAAAAT3ZlcmZsb3fgAAAABAAAAAQAAADpAAAAU2VyaWFsaXplRXJyc291cmNlX3R5cGUA4AAAAAQAAAAEAAAA6gAAAG1zZ1BhcnNlRXJydGFyZ2V0X3R5cGVOb3RGb3VuZGtpbmRJbnZhbGlkVXRmOEludmFsaWRIZXhJbnZhbGlkRGF0YVNpemVleHBlY3RlZAAA4AAAAAQAAAAEAAAA6wAAAGFjdHVhbEludmFsaWRCYXNlNjRHZW5lcmljRXJyUmVjb3ZlclB1YmtleUVycgAAAOAAAAAEAAAABAAAAOwAAABWZXJpZmljYXRpb25FcnIA4AAAAAQAAAAEAAAA7QAAAFNobFNoclBvd011bFN1YkFkZENhbm5vdCAgd2l0aCAgYW5kIJqLEAAHAAAAoYsQAAYAAACnixAABQAAAE92ZXJmbG93RXJyb3JvcGVyYXRpb24AAOAAAAAEAAAABAAAANkAAABvcGVyYW5kMW9wZXJhbmQyQ29udmVyc2lvbk92ZXJmbG93RXJyb3IA4AAAAAQAAAAEAAAA7gAAAHZhbHVlQ2Fubm90IGRpdmlkZSAgYnkgemVybwApjBAADgAAADeMEAAIAAAARGl2aWRlQnlaZXJvRXJyb3JvcGVyYW5kVW5rbm93biBlcnJvcjogAGiMEAAPAAAASW52YWxpZCByZWNvdmVyeSBwYXJhbWV0ZXIuIFN1cHBvcnRlZCB2YWx1ZXM6IDAgYW5kIDEuAACAjBAANgAAAEludmFsaWQgcHVibGljIGtleSBmb3JtYXQAAADAjBAAGQAAAEludmFsaWQgc2lnbmF0dXJlIGZvcm1hdOSMEAAYAAAASW52YWxpZCBoYXNoIGZvcm1hdAAEjRAAEwAAAEdlbmVyaWMgZXJyb3IAAAAgjRAADQAAAEJhdGNoIGVycm9yADiNEAALAAAAVW5rbm93bkVycmVycm9yX2NvZGXgAAAABAAAAAQAAADvAAAASW52YWxpZFJlY292ZXJ5UGFyYW1JbnZhbGlkUHVia2V5Rm9ybWF0SW52YWxpZFNpZ25hdHVyZUZvcm1hdEludmFsaWRIYXNoRm9ybWF0QmF0Y2hFcnIAAJeLEACUixAAkYsQAI6LEACLixAAiIsQAFN5c3RlbUVycm9yaW52YWxpZF9yZXF1ZXN0aW52YWxpZF9yZXNwb25zZW5vX3N1Y2hfY29udHJhY3Rub19zdWNoX2NvZGV1bmtub3dudW5zdXBwb3J0ZWRfcmVxdWVzdOuNEAAPAAAA+o0QABAAAAAKjhAAEAAAABqOEAAMAAAAJo4QAAcAAAAtjhAAEwAAAGtpbmRwjhAABAAAAGNvZGVfaWQAfI4QAAcAAABhZGRyjI4QAAQAAABlcnJvcnJlc3BvbnNlAAAAmI4QAAUAAACdjhAACAAAAHJlcXVlc3QAmI4QAAUAAAC4jhAABwAAAPEAAAAMAAAABAAAAPIAAADzAAAA0gAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkA9AAAAAAAAAABAAAAFwAAAC9ydXN0Yy82Mjg0OTk4YTI2NzdkN2UzZTg0MjBkYjc4M2YzYWE0ZmQ4MGQ3NDIzL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAwjxAASwAAAOgJAAAJAAAA9AAAAAQAAAAEAAAA9QAAAPYAAAD3AAAAaW52YWxpZCBiYXNlNjQ6IKSPEAAQAAAAVEw7RFI6IFZhbHVlIG11c3Qgbm90IGJlIGVtcHR5IGluIFN0b3JhZ2U6OnNldCBidXQgaW4gbW9zdCBjYXNlcyB5b3UgY2FuIHVzZSBTdG9yYWdlOjpyZW1vdmUgaW5zdGVhZC4gTG9uZyBzdG9yeTogR2V0dGluZyBlbXB0eSB2YWx1ZXMgZnJvbSBzdG9yYWdlIGlzIG5vdCB3ZWxsIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50LiBTb21lIG9mIG91ciBpbnRlcm5hbCBpbnRlcmZhY2VzIGNhbm5vdCBkaWZmZXJlbnRpYXRlIGJldHdlZW4gYSBub24tZXhpc3RlbnQga2V5IGFuZCBhbiBlbXB0eSB2YWx1ZS4gUmlnaHQgbm93LCB5b3UgY2Fubm90IHJlbHkgb24gdGhlIGJlaGF2aW91ciBvZiBlbXB0eSB2YWx1ZXMuIFRvIHByb3RlY3QgeW91IGZyb20gdHJvdWJsZSBsYXRlciBvbiwgd2Ugc3RvcCBoZXJlLiBTb3JyeSBmb3IgdGhlIGluY29udmVuaWVuY2UhIFdlIGhpZ2hseSB3ZWxjb21lIHlvdSB0byBjb250cmlidXRlIHRvIENvc21XYXNtLCBtYWtpbmcgdGhpcyBtb3JlIHNvbGlkIG9uZSB3YXkgb3IgdGhlIG90aGVyLryPEAAIAgAAL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvY29zbXdhc20tc3RkLTEuMi4zL3NyYy9pbXBvcnRzLnJzAAAAzJEQAF0AAABrAAAADQAAAPQAAAAEAAAABAAAAPgAAAD5AAAA+gAAAPsAAABpbnB1dCB0b28gbG9uZyBmb3IgYWRkcl92YWxpZGF0ZWFkZHJfdmFsaWRhdGUgZXJyb3JlZDogAHiSEAAXAAAAaW5wdXQgdG9vIGxvbmcgZm9yIGFkZHJfY2Fub25pY2FsaXplYWRkcl9jYW5vbmljYWxpemUgZXJyb3JlZDogALySEAAbAAAAYWRkcl9odW1hbml6ZSBlcnJvcmVkOiAA4JIQABcAAABNZXNzYWdlVG9vTG9uZyBtdXN0IG5vdCBoYXBwZW4uIFRoaXMgaXMgYSBidWcgaW4gdGhlIFZNLgCTEAA4AAAAzJEQAF0AAAAIAQAAEgAAAMyREABdAAAAJQEAABIAAABJbnZhbGlkSGFzaEZvcm1hdCBtdXN0IG5vdCBoYXBwZW4uIFRoaXMgaXMgYSBidWcgaW4gdGhlIFZNLgBgkxAAOwAAAMyREABdAAAAPwEAABIAAABFcnJvciBjb2RlIDIgdW51c2VkIHNpbmNlIENvc21XYXNtIDAuMTUuIFRoaXMgaXMgYSBidWcgaW4gdGhlIFZNLgAAALSTEABBAAAAzJEQAF0AAAA+AQAAEgAAAMyREABdAAAAXwEAABIAAADMkRAAXQAAAF4BAAASAAAAVW5rbm93biBlcnJvcjogADCUEAAPAAAASW52YWxpZCByZWNvdmVyeSBwYXJhbWV0ZXIuIFN1cHBvcnRlZCB2YWx1ZXM6IDAgYW5kIDEuAABIlBAANgAAAEludmFsaWQgc2lnbmF0dXJlIGZvcm1hdIiUEAAYAAAASW52YWxpZCBoYXNoIGZvcm1hdAColBAAEwAAAFVua25vd25FcnJlcnJvcl9jb2Rl/AAAAAQAAAAEAAAA7wAAAEludmFsaWRSZWNvdmVyeVBhcmFtSW52YWxpZFNpZ25hdHVyZUZvcm1hdEludmFsaWRIYXNoRm9ybWF0ACSVEAAAAAAAQnVmZmVyIGlzIGZ1bGwAACyVEAAOAAAAZmFsc2UvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9zZXJkZS1qc29uLXdhc20tMC41LjEvc3JjL3Nlci9tb2QucnMAAABJlRAAYAAAAN0AAAAJAAAAL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvc2VyZGUtanNvbi13YXNtLTAuNS4xL3NyYy9kZS91bmVzY2FwZS5yc7yVEABkAAAAJQAAABUAAABOb24taGV4IEFTQ0lJIGNoYXJhY3RlciBmb3VuZAAAADCWEAAdAAAAvJUQAGQAAACZAAAADgAAAC9ob21lL3Z1b25nLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3NlcmRlLWpzb24td2FzbS0wLjUuMS9zcmMvZGUvbW9kLnJzAGiWEABfAAAAfQAAACIAAABolhAAXwAAAIEAAAAsAAAA6JYQAAAAAABKU09OIGhhcyBhIGNvbW1hIGFmdGVyIHRoZSBsYXN0IHZhbHVlIGluIGFuIGFycmF5IG9yIG1hcC5KU09OIGhhcyBub24td2hpdGVzcGFjZSB0cmFpbGluZyBjaGFyYWN0ZXJzIGFmdGVyIHRoZSB2YWx1ZS5Gb3VuZCBhIGxvbmUgc3Vycm9nYXRlLCB3aGljaCBjYW4gZXhpc3QgaW4gSlNPTiBidXQgY2Fubm90IGJlIGVuY29kZWQgdG8gVVRGLTguT2JqZWN0IGtleSBpcyBub3QgYSBzdHJpbmcuSW52YWxpZCB1bmljb2RlIGNvZGUgcG9pbnQuSW52YWxpZCB0eXBlSW52YWxpZCBudW1iZXIuSW52YWxpZCBlc2NhcGUgc2VxdWVuY2UuRXhwZWN0ZWQgdGhpcyBjaGFyYWN0ZXIgdG8gc3RhcnQgYSBKU09OIHZhbHVlLkV4cGVjdGVkIHRvIHBhcnNlIGVpdGhlciBhIGB0cnVlYCwgYGZhbHNlYCwgb3IgYSBgbnVsbGAuRXhwZWN0ZWQgdGhpcyBjaGFyYWN0ZXIgdG8gYmUgZWl0aGVyIGEgYCcsJ2Agb3IgYSBgJ30nYC5FeHBlY3RlZCBhIGxvdyBzdXJyb2dhdGUgKERDMDDigJNERkZGKS5FeHBlY3RlZCB0aGlzIGNoYXJhY3RlciB0byBiZSBlaXRoZXIgYSBgJywnYCBvcmEgYCddJ2AuRXhwZWN0ZWQgYSBoaWdoIHN1cnJvZ2F0ZSAoRDgwMOKAk0RCRkYpLkV4cGVjdGVkIHRoaXMgY2hhcmFjdGVyIHRvIGJlIGEgYCc6J2AuRU9GIHdoaWxlIHBhcnNpbmcgYSBKU09OIHZhbHVlLkVPRiB3aGlsZSBwYXJzaW5nIGEgc3RyaW5nLkVPRiB3aGlsZSBwYXJzaW5nIGFuIG9iamVjdC5FT0Ygd2hpbGUgcGFyc2luZyBhIGxpc3QuQ29udHJvbCBjaGFyYWN0ZXIgZm91bmQgaW4gc3RyaW5nLkludmFsaWQgaGFzaCB0eXBlIHdpdGggbGVuZ3RoOiAA+JkQAB8AAABHcmFuZHBhIGZpbmFsaXR5IHByb29mIGlzIHJlcXVpcmVkIQAgmhAAIwAAAGRlc2NyaXB0aW9uKCkgaXMgZGVwcmVjYXRlZDsgdXNlIERpc3BsYXlDdXN0b20AAP8AAAAEAAAABAAAAAABAABBbnlob3cAAP8AAAAEAAAABAAAAAEBAABHcmFuZHBhUHJpbWl0aXZlcwAAAP8AAAAEAAAABAAAAAIBAABQcm90b0J1Zv8AAAAEAAAABAAAAAMBAABJY3MwNAAAAP8AAAAEAAAABAAAAAQBAABJY3MwMgAAAP8AAAAEAAAABAAAAAUBAABWYWxpZGF0aW9uRXJyb3IA/wAAAAQAAAAEAAAABgEAAFBhcnNlVGltZVN0YW1wAAD/AAAABAAAAAQAAAAHAQAAVGltZVN0YW1wAAAA/wAAAAQAAAAEAAAACAEAAENvZGVjAAAA/wAAAAQAAAAEAAAACQEAAISbEAAAAAAATm90IGVub3VnaCBkYXRhIHRvIGRlY29kZSB2ZWN0b3IvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9wYXJpdHktc2NhbGUtY29kZWMtMy41LjAvc3JjL2NvZGVjLnJzAAAArJsQAGEAAAAJBAAAHQAAAG91dCBvZiByYW5nZSBkZWNvZGluZyBDb21wYWN0PHUzMj5Db3VsZCBub3QgZGVjb2RlIGBIZWFkZXI6OnBhcmVudF9oYXNoYENvdWxkIG5vdCBkZWNvZGUgYEhlYWRlcjo6bnVtYmVyYENvdWxkIG5vdCBkZWNvZGUgYEhlYWRlcjo6c3RhdGVfcm9vdGBDb3VsZCBub3QgZGVjb2RlIGBIZWFkZXI6OmV4dHJpbnNpY3Nfcm9vdGBDb3VsZCBub3QgZGVjb2RlIGBIZWFkZXI6OmRpZ2VzdGAxMC1ncmFuZHBhL2liYy5saWdodGNsaWVudHMuZ3JhbmRwYS52MS5Db25zZW5zdXNTdGF0ZWVuY29kZSBDb25zZW5zdXNTdGF0ZQAMAQAAFAAAAAQAAAARAAAAbGlnaHQtY2xpZW50cy9pY3MxMC1ncmFuZHBhL3NyYy9jb25zZW5zdXNfc3RhdGUucnMAAFSdEAAyAAAANAAAABQAAABJbnZhbGlkIGNvbnNlbnN1cyBzdGF0ZTogbWlzc2luZyB0aW1lc3RhbXBJbnZhbGlkIGNvbnNlbnN1cyBzdGF0ZTogaW52YWxpZCB0aW1lc3RhbXAgAAAAwp0QACsAAABDb25zZW5zdXNTdGF0ZXRpbWVzdGFtcAANAQAABAAAAAQAAAAOAQAAcm9vdA0BAAAEAAAABAAAAA8BAABDb3VsZCBub3QgZGVjb2RlIGBEaWdlc3RJdGVtVHlwZWAsIHZhcmlhbnQgZG9lc24ndCBleGlzdENvdWxkIG5vdCBkZWNvZGUgYERpZ2VzdEl0ZW1UeXBlYCwgZmFpbGVkIHRvIHJlYWQgdmFyaWFudCBieXRlQ291bGQgbm90IGRlY29kZSBgRGlnZXN0Ojpsb2dzYAAAAEludmFsaWQgaGFzaCB0eXBlIHdpdGggbGVuZ3RoOiAAzJ4QAB8AAABQYXJhY2hhaW4gaGVhZGVyIGlzIHJlcXVpcmVkIQAAAPSeEAAdAAAAZGVzY3JpcHRpb24oKSBpcyBkZXByZWNhdGVkOyB1c2UgRGlzcGxheRABAAAMAAAABAAAABEBAAAQAQAADAAAAAQAAAASAQAAEQEAAESfEAATAQAAFAEAABUBAAAWAQAAFwEAABgBAAAIAAAABAAAABkBAAAYAQAACAAAAAQAAAAaAQAAGQEAAICfEAATAQAAGwEAABwBAAAdAQAAHgEAAB8BAAAoAAAABAAAACABAAAfAQAAKAAAAAQAAAAhAQAAIAEAALyfEAAiAQAAIwEAACQBAAAiAQAAJQEAACYBAAAsAAAABAAAACABAAAmAQAALAAAAAQAAAAhAQAAIAEAAPifEAAiAQAAJwEAACQBAAAiAQAAJQEAAENvdWxkIG5vdCBkZWNvZGUgYEZpbmFsaXR5UHJvb2Y6OmJsb2NrYENvdWxkIG5vdCBkZWNvZGUgYEZpbmFsaXR5UHJvb2Y6Omp1c3RpZmljYXRpb25gQ291bGQgbm90IGRlY29kZSBgRmluYWxpdHlQcm9vZjo6dW5rbm93bl9oZWFkZXJzYAAoAQAAKQEAACoBAAArAQAALAEAAC0BAAAuAQAALwEAADABAAAxAQAAYXNzZXJ0aW9uIGZhaWxlZDogaWR4IDwgQ0FQQUNJVFkvcnVzdGMvNjI4NDk5OGEyNjc3ZDdlM2U4NDIwZGI3ODNmM2FhNGZkODBkNzQyMy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9ub2RlLnJzAAShEABbAAAAiwIAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzcmMubGVuKCkgPT0gZHN0LmxlbigpBKEQAFsAAADUBgAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9sZF9sZWZ0X2xlbiA+PSBjb3VudAAEoRAAWwAAAIQFAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogbGVuID4gMAAAAAShEABbAAAAYgEAAAkAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlL3J1c3RjLzYyODQ5OThhMjY3N2Q3ZTNlODQyMGRiNzgzZjNhYTRmZDgwZDc0MjMvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMAADeiEABfAAAATAIAAA0AAAAvcnVzdGMvNjI4NDk5OGEyNjc3ZDdlM2U4NDIwZGI3ODNmM2FhNGZkODBkNzQyMy9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAAqKIQAEoAAAAhBAAAFQAAAKiiEABKAAAALwQAAB4AAACoohAASgAAADgEAAAYAAAAqKIQAEoAAAA8BAAA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Z2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3NtYWxsdmVjLTEuMTAuMC9zcmMvbGliLnJzAAAYqhAAVgAAAEYBAAASAAAAY2FwYWNpdHkgb3ZlcmZsb3cAAAAYqhAAVgAAADUBAAA2AAAAYXNzZXJ0aW9uIGZhaWxlZDogbmV3X2NhcCA+PSBsZW4YqhAAVgAAAIQDAAANAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQBbAQAAAAAAAAEAAABcAQAAL3J1c3RjLzYyODQ5OThhMjY3N2Q3ZTNlODQyMGRiNzgzZjNhYTRmZDgwZDc0MjMvbGlicmFyeS9hbGxvYy9zcmMvc3luYy5ycwAAABCrEABJAAAAiQQAABYAAAAQqxAASQAAANoEAAARAAAAL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdHJpZS1kYi0wLjI1LjEvc3JjL25vZGUucnMAAHyrEABWAAAAvQEAAEIAAAB8qxAAVgAAALwBAAA+AAAAfKsQAFYAAADaAQAAIgAAAHyrEABWAAAA7gEAADQAAAB8qxAAVgAAAO0BAAA4AAAAL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdHJpZS1kYi0wLjI1LjEvc3JjL25pYmJsZS9sZWZ0bmliYmxlc2xpY2UucnMkrBAAaAAAAC4AAAASAAAAJKwQAGgAAABCAAAAQAAAACSsEABoAAAAZwAAAAwAAAAkrBAAaAAAAGcAAAAmAAAAaXQncyBsZXNzIHRoYW4gcHJlZml4LmxlbigpOyBxZWQvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90cmllLWRiLTAuMjUuMS9zcmMvcHJvb2YvdmVyaWZ5LnJzAADsrBAAXgAAAHsBAAANAAAAXK0QAAAAAABpY3MwMyBjb25uZWN0aW9uIGVycm9yAABkrRAAFgAAAGljczAyIGNsaWVudCBlcnJvcgAAhK0QABIAAABpY3MwNSBwb3J0IGVycm9yoK0QABAAAABjaGFubmVsIHN0YXRlIHVua25vd246IAC4rRAAFwAAAGlkZW50aWZpZXIgZXJyb3LYrRAAEAAAAGNoYW5uZWwgb3JkZXIgdHlwZSB1bmtub3duOiDwrRAAHAAAAGludmFsaWQgY29ubmVjdGlvbiBob3BzIGxlbmd0aDogZXhwZWN0ZWQgOyBhY3R1YWwgAAAUrhAAKQAAAD2uEAAJAAAAcGFja2V0IGRlc3RpbmF0aW9uIHBvcnQgIGFuZCBjaGFubmVsICBkb2Vzbid0IG1hdGNoIHRoZSBjb3VudGVycGFydHkncyBwb3J0L2NoYW5uZWwAWK4QABgAAABwrhAADQAAAH2uEAAuAAAAaW52YWxpZCB2ZXJzaW9uAMSuEAAPAAAAaW52YWxpZCBzaWduZXIgYWRkcmVzcwAA3K4QABYAAABpbnZhbGlkIHByb29mAAAA/K4QAA0AAABpbnZhbGlkIHByb29mOiBtaXNzaW5nIGhlaWdodAAAABSvEAAdAAAAaW52YWxpZCBwcm9vZjogbWlzc2luZyBjaGFubmVsIHByb29mPK8QACQAAABNaXNzaW5nIHNlcXVlbmNlIG51bWJlciBmb3IgcmVjZWl2aW5nIHBhY2tldHMgb24gcG9ydCAAAGivEAA2AAAAcK4QAA0AAABwYWNrZXQgc2VxdWVuY2UgY2Fubm90IGJlIDAAsK8QABsAAABwYWNrZXQgZGF0YSBieXRlcyBjYW5ub3QgYmUgZW1wdHkAAADUrxAAIQAAAHBhY2tldCB0aW1lb3V0IGhlaWdodCBhbmQgcGFja2V0IHRpbWVvdXQgdGltZXN0YW1wIGNhbm5vdCBib3RoIGJlIDAAALAQAEMAAABpbnZhbGlkIHRpbWVvdXQgaGVpZ2h0IGZvciB0aGUgcGFja2V0AAAATLAQACUAAABpbnZhbGlkIHBhY2tldAAAfLAQAA4AAAB0aGVyZSBpcyBubyBwYWNrZXQgaW4gdGhpcyBtZXNzYWdlAACUsBAAIgAAAG1pc3NpbmcgY2hhbm5lbCBpZAAAwLAQABIAAABtaXNzaW5nIGNvdW50ZXJwYXJ0edywEAAUAAAAbm8gY29tbW9uZyB2ZXJzaW9uAAD4sBAAEgAAAG1pc3NpbmcgY2hhbm5lbCBlbmQAFLEQABMAAABzaW5nbGUgdmVyc2lvbiBtdXN0IGJlIG5lZ29jaWF0ZWQgb24gY29ubmVjdGlvbiBiZWZvcmUgb3BlbmluZyBjaGFubmVsAAAwsRAARgAAAHRoZSBjaGFubmVsIG9yZGVyaW5nIGlzIG5vdCBzdXBwb3J0ZWQgYnkgY29ubmVjdGlvbgCAsRAAMwAAAHRoZSBjaGFubmVsIGVuZCAoLCApIGRvZXMgbm90IGV4aXN0ALyxEAARAAAAzbEQAAIAAADPsRAAEAAAAGEgZGlmZmVyZW50IGNoYW5uZWwgZXhpc3RzICh3YXMgaW5pdGlhbGl6ZWQpIGFscmVhZHkgZm9yIHRoZSBzYW1lIGNoYW5uZWwgaWRlbnRpZmllciAAAAD4sRAAVQAAAHRoZSBhc3NvY2lhdGVkIGNvbm5lY3Rpb24gIGlzIG5vdCBPUEVOAABYshAAGgAAAHKyEAAMAAAAVW5kZWZpbmVkIGNvdW50ZXJwYXJ0eSBjb25uZWN0aW9uIGZvciAAAJCyEAAmAAAAVmVyaWZpY2F0aW9uIGZhaWxzIGZvciB0aGUgcGFja2V0IHdpdGggdGhlIHNlcXVlbmNlIG51bWJlciAAwLIQADsAAABFcnJvciB2ZXJpZnlpbmcgY2hhbm5lbCBzdGF0ZQAAAASzEAAdAAAAQWNrbm93bGVkZ21lbnQgY2Fubm90IGJlIGVtcHR5AAAssxAAHgAAAFBhY2tldCBhY2tub3dsZWRnZW1lbnQgZXhpc3RzIGZvciB0aGUgcGFja2V0IHdpdGggdGhlIHNlcXVlbmNlIABUsxAAPwAAAE1pc3Npbmcgc2VxdWVuY2UgbnVtYmVyIGZvciBzZW5kaW5nIHBhY2tldHMgb24gcG9ydCCcsxAANAAAAHCuEAANAAAAU3RyaW5nICBjYW5ub3QgYmUgY29udmVydGVkIHRvIHBhY2tldCBzZXF1ZW5jZQAA4LMQAAcAAADnsxAAJwAAAEludmFsaWQgcGFja2V0IHNlcXVlbmNlICDiiaAgbmV4dCBzZW5kIHNlcXVlbmNlICC0EAAYAAAAOLQQABgAAABSZWNlaXZpbmcgY2hhaW4gYmxvY2sgaGVpZ2h0ICA+PSBwYWNrZXQgdGltZW91dCBoZWlnaHQgAGC0EAAdAAAAfbQQABoAAABQYWNrZXQgdGltZW91dCBub3Qgc2F0aXNpZmllZCBmb3IgZWl0aGVyIHBhY2tldCBoZWlnaHQgb3IgdGltZXN0YW1wLCBQYWNrZXQgdGltZW91dCBoZWlnaHQgLCBjaGFpbiBoZWlnaHQgLCBQYWNrZXQgdGltZW91dCB0aW1lc3RhbXAgLCAgY2hhaW4gdGltZXN0YW1wIKi0EABbAAAAA7UQAA8AAAAStRAAGwAAAC21EAATAAAAUGFja2V0IHRpbWVvdXQgaGVpZ2h0ICA+IGNoYWluIGhlaWdodCAAAGC1EAAWAAAAdrUQABAAAABQYWNrZXQgdGltZW91dCB0aW1lc3RhbXAgID4gY2hhaW4gdGltZXN0YW1wIJi1EAAZAAAAsbUQABMAAABSZWNlaXZpbmcgY2hhaW4gYmxvY2sgdGltZXN0YW1wID49IHBhY2tldCB0aW1lb3V0IHRpbWVzdGFtcADUtRAAOwAAAEludmFsaWQgcGFja2V0IHRpbWVvdXQgdGltZXN0YW1wIHZhbHVlAAAYthAAJgAAAEludmFsaWQgcGFja2V0IGhlaWdodCB2YWx1ZQBIthAAGwAAAEludmFsaWQgdGltZXN0YW1wIGluIGNvbnNlbnN1cyBzdGF0ZTsgdGltZXN0YW1wIG11c3QgYmUgYSBwb3NpdGl2ZSB2YWx1ZWy2EABIAAAAQ2xpZW50IHdpdGggaWQgIGlzIGZyb3plbgAAALy2EAAPAAAAy7YQAAoAAABJbnZhbGlkIGNoYW5uZWwgaWQgaW4gY291bnRlcnBhcnR5AADothAAIgAAAENoYW5uZWwgIHNob3VsZCBub3QgYmUgc3RhdGUgAAAAFLcQAAgAAAActxAAFQAAACBpcyBDbG9zZWQAABS3EAAIAAAARLcQAAoAAABIYW5kc2hha2UgcHJvb2YgdmVyaWZpY2F0aW9uIGZhaWxzIGF0IENoYW5uZWxPcGVuQWNrYLcQADQAAABDb21taXRtZW50IGZvciB0aGUgcGFja2V0ICBub3QgZm91bmSctxAAGgAAALa3EAAKAAAAVGhlIHN0b3JlZCBjb21taXRtZW50IG9mIHRoZSBwYWNrZXQgIGlzIGluY29ycmVjdAAAANC3EAAkAAAA9LcQAA0AAABSZWNlaXB0IGZvciB0aGUgcGFja2V0IAAUuBAAFwAAALa3EAAKAAAAQWNrbm93bGVkZ21lbnQgZm9yIHRoZSBwYWNrZXQgAAA8uBAAHgAAALa3EAAKAAAATWlzc2luZyBzZXF1ZW5jZSBudW1iZXIgZm9yIGFjayBwYWNrZXRzIG9uIHBvcnQgbLgQADAAAABwrhAADQAAAFByb2Nlc3NlZCB0aW1lIGZvciB0aGUgY2xpZW50ICBhdCBoZWlnaHQgAAAArLgQAB4AAADKuBAACwAAALa3EAAKAAAAUHJvY2Vzc2VkIGhlaWdodCBmb3IgdGhlIGNsaWVudCDwuBAAIAAAAMq4EAALAAAAtrcQAAoAAAByb3V0ZSBub3QgZm91bmQAKLkQAA8AAABpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBlcnJvcjogAEC5EAAfAAAAYXBwbGljYXRpb24gbW9kdWxlIGVycm9yOiAAAGi5EAAaAAAARmFpbGVkIHRvIGNvbnZlcnQgYWJjaSBldmVudCB0byBJYmNFdmVudDogAACMuRAAKgAAAG5vdCBlbm91Z2ggZnVuZHMgZm9yIGZlZcC5EAAYAAAA4LkQAAAAAABjbGllbnQgJycgZXJyb3I6IAAAAOi5EAAIAAAA8LkQAAkAAAB1bmtub3duIGNsaWVudCB0eXBlOiAAAAAMuhAAFQAAAENsaWVudCBpZGVudGlmaWVyIGNvbnN0cnVjdG9yIGZhaWxlZCBmb3IgdHlwZSAgd2l0aCBjb3VudGVyICy6EAAuAAAAWroQAA4AAABjbGllbnQgYWxyZWFkeSBleGlzdHM6IAB4uhAAFwAAAGNsaWVudCBub3QgZm91bmQ6IAAAmLoQABIAAABjbGllbnQgaXMgZnJvemVuOiAAALS6EAASAAAAY29uc2Vuc3VzIHN0YXRlIG5vdCBmb3VuZCBhdDogIGF0IGhlaWdodCAAAADQuhAAHgAAAO66EAALAAAAaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgZXJyb3I6IAAMuxAAHwAAAGhlYWRlciB2ZXJpZmljYXRpb24gZmFpbGVkIHdpdGggcmVhc29uOiA0uxAAKAAAAGZhaWxlZCB0byBidWlsZCB0cnVzdCB0aHJlc2hvbGQgZnJvbSBmcmFjdGlvbjogL2S7EAAvAAAAk7sQAAEAAABmYWlsZWQgdG8gYnVpbGQgVGVuZGVybWludCBkb21haW4gdHlwZSB0cnVzdCB0aHJlc2hvbGQgZnJvbSBmcmFjdGlvbjogAACkuxAARgAAAJO7EAABAAAAdW5rbm93biBjbGllbnQgc3RhdGUgdHlwZTogAPy7EAAbAAAAdGhlIGNsaWVudCBzdGF0ZSB3YXMgbm90IGZvdW5kAAAgvBAAHgAAAGVtcHR5IHByZWZpeEi8EAAMAAAAdW5rbm93biBjbGllbnQgY29uc2Vuc3VzIHN0YXRlIHR5cGU6IAAAAFy8EAAlAAAAdGhlIGNsaWVudCBjb25zZW5zdXMgc3RhdGUgd2FzIG5vdCBmb3VuZIy8EAAoAAAAdW5rbm93biBoZWFkZXIgdHlwZTogAAAAvLwQABUAAAB1bmtub3duIG1pc2JlaGF2aW91ciB0eXBlOiAA3LwQABsAAABpbnZhbGlkIHJhdyBjbGllbnQgaWRlbnRpZmllciAAAAC9EAAeAAAAZXJyb3IgZGVjb2RpbmcgcmF3IGNsaWVudCBzdGF0ZQAovRAAHwAAAGVycm9yIGRlY29kaW5nIHJhdyBoZWFkZXIAAABQvRAAGQAAAG1pc3NpbmcgcmF3IGNsaWVudCBzdGF0ZXS9EAAYAAAAaW52YWxpZCByYXcgY2xpZW50IGNvbnNlbnN1cyBzdGF0ZQAAlL0QACIAAABtaXNzaW5nIHJhdyBjbGllbnQgY29uc2Vuc3VzIHN0YXRlAADAvRAAIgAAAGludmFsaWQgY2xpZW50IGlkIGluIHRoZSB1cGRhdGUgY2xpZW50IG1lc3NhZ2UAAOy9EAAuAAAAZGVjb2RlIGVycm9yJL4QAAwAAABlbmNvZGUgZXJyb3I4vhAADAAAAGludmFsaWQgcmF3IGNsaWVudCBjb25zZW5zdXMgc3RhdGU6IHRoZSBoZWlnaHQgZmllbGQgaXMgbWlzc2luZwBMvhAAPwAAAGludmFsaWQgY2xpZW50IGlkZW50aWZpZXIAAACUvhAAGQAAAGludmFsaWQgcmF3IGhlYWRlcgAAuL4QABIAAABtYWxmb3JtZWQgaGVhZGVyOyBleHBlY3RlZCB0byBiZSBoZXggZW5jb2RlZNS+EAAsAAAAbWlzc2luZyByYXcgaGVhZGVyAAAIvxAAEgAAAG1pc3NpbmcgcmF3IGNsaWVudCBtZXNzYWdlAAAkvxAAGgAAAGludmFsaWQgcmF3IG1pc2JlaGF2aW91cki/EAAYAAAAbWlzc2luZyByYXcgbWlzYmVoYXZpb3VyaL8QABgAAABTdHJpbmcgIGNhbm5ub3QgYmUgY29udmVydGVkIHRvIGhlaWdodAAAiL8QAAcAAACPvxAAHwAAAGhlaWdodCBjYW5ub3QgZW5kIHVwIHplcm8gb3IgbmVnYXRpdmUAAADAvxAAJQAAAGludmFsaWQgYWRkcmVzcwDwvxAADwAAAGludmFsaWQgcHJvb2YgZm9yIHRoZSB1cGdyYWRlZCBjbGllbnQgc3RhdGUACMAQACsAAABpbnZhbGlkIHByb29mIGZvciB0aGUgdXBncmFkZWQgY29uc2Vuc3VzIHN0YXRlAAA8wBAALgAAAGludmFsaWQgY29tbWl0bWVudCBwcm9vZiBieXRlcwAAdMAQAB4AAABpbnZhbGlkIHBhY2tldCB0aW1lb3V0IHRpbWVzdGFtcCB2YWx1ZQAAnMAQACYAAABtaXNtYXRjaCBiZXR3ZWVuIGNsaWVudCBhbmQgYXJndW1lbnRzIHR5cGVzLCBleHBlY3RlZDogAMzAEAA3AAAASW5zdWZmaWNpZW50IG92ZXJsYXAgAAAADMEQABUAAABtaXNtYXRjaCBpbiByYXcgY2xpZW50IGNvbnNlbnN1cyBzdGF0ZSAgd2l0aCBleHBlY3RlZCBzdGF0ZSAswRAAJwAAAFPBEAAVAAAAcmVjZWl2ZWQgaGVhZGVyIGhlaWdodCAoKSBpcyBsb3dlciB0aGFuIChvciBlcXVhbCB0bykgY2xpZW50IGxhdGVzdCBoZWlnaHQgKCkAAAB4wRAAGAAAAJDBEAA0AAAAxMEQAAEAAAB1cGdyYWRlZCBjbGllbnQgaGVpZ2h0ICBtdXN0IGJlIGF0IGdyZWF0ZXIgdGhhbiBjdXJyZW50IGNsaWVudCBoZWlnaHQgAADgwRAAFwAAAPfBEAAvAAAAdGltZXN0YW1wIGlzIGludmFsaWQgb3IgbWlzc2luZywgdGltZXN0YW1wPSwgIG5vdz0AADjCEAArAAAAY8IQAAcAAABoZWFkZXIgbm90IHdpdGhpbmcgdHJ1c3RpbmcgcGVyaW9kOiBleHBpcmVzX2F0PSBub3c9fMIQAC8AAACrwhAABQAAAHRoZSBsb2NhbCBjb25zZW5zdXMgc3RhdGUgY291bGQgbm90IGJlIHJldHJpZXZlZCBmb3IgaGVpZ2h0IMDCEAA8AAAAaW52YWxpZCBjb25uZWN0aW9uIGVuZAAABMMQABYAAABpbnZhbGlkIGNoYW5uZWwgZW5kACTDEAATAAAAaW52YWxpZCBhbnkgY2xpZW50IHN0YXRlQMMQABgAAABpbnZhbGlkIGFueSBjbGllbnQgY29uc2Vuc3VzIHN0YXRlAABgwxAAIgAAAGZhaWxlZCB0byBwYXJzZSBzaWduZXIAAIzDEAAWAAAA8gEAAAQAAAAEAAAA8wEAAPQBAAD1AQAAYXNzZXJ0aW9uIGZhaWxlZDogbWlkIDw9IHNlbGYubGVuKClhdHRlbXB0IHRvIGpvaW4gaW50byBjb2xsZWN0aW9uIHdpdGggbGVuID4gdXNpemU6Ok1BWC9ydXN0Yy82Mjg0OTk4YTI2NzdkN2UzZTg0MjBkYjc4M2YzYWE0ZmQ4MGQ3NDIzL2xpYnJhcnkvYWxsb2Mvc3JjL3N0ci5ycxzEEABIAAAAsAAAABYAAAAcxBAASAAAAJQAAAAYAAAAxMMQAAAAAABDb21taXRtZW50Um9vdAAA9gEAAAwAAAAEAAAA9wEAAGludmFsaWQgcmF3IG1lcmtsZSBwcm9vZqzEEAAYAAAAZmFpbGVkIHRvIGRlY29kZSBjb21taXRtZW50IHByb29mAAAAzMQQACEAAABlbXB0eSBjb21taXRtZW50IHByZWZpeAD4xBAAFwAAAGVtcHR5IG1lcmtsZSBwcm9vZgAAGMUQABIAAABlbXB0eSBtZXJrbGUgcm9vdAAAADTFEAARAAAAZW1wdHkgdmVyaWZpZWQgdmFsdWVQxRAAFAAAAG1pc21hdGNoIGJldHdlZW4gdGhlIG51bWJlciBvZiBwcm9vZnMgd2l0aCB0aGF0IG9mIHNwZWNzbMUQADgAAABtaXNtYXRjaCBiZXR3ZWVuIHRoZSBudW1iZXIgb2YgcHJvb2ZzIHdpdGggdGhhdCBvZiBrZXlzAKzFEAA3AAAAaW52YWxpZCBtZXJrbGUgcHJvb2bsxRAAFAAAAHByb29mIHZlcmlmaWNhdGlvbiBmYWlsZWQAAAAIxhAAGQAAAGlkZW50aWZpZXIgIGNhbm5vdCBjb250YWluIHNlcGFyYXRvciAnLycsxhAACwAAADfGEAAdAAAAIGhhcyBpbnZhbGlkIGxlbmd0aCAgbXVzdCBiZSBiZXR3ZWVuIC0gY2hhcmFjdGVycwAAACzGEAALAAAAZMYQABQAAAB4xhAAEQAAAInGEAABAAAAisYQAAsAAAAgbXVzdCBvbmx5IGNvbnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgb3IgYC5gLCBgX2AsIGArYCwgYC1gLCBgI2AsIC0gYFtgLCBgXWAsIGA8YCwgYD5gACzGEAALAAAAwMYQAFsAAABpZGVudGlmaWVyIGNhbm5vdCBiZSBlbXB0eQAALMcQABoAAABjaGFpbiBpZGVudGlmaWVycyBhcmUgZXhwZWN0ZWQgdG8gYmUgaW4gZXBvY2ggZm9ybWF0IAAAAFDHEAA1AAAAY2hhbm5lbCBpZGVudGlmaWVycyBhcmUgZXhwZWN0ZWQgdG8gYmUgaW4gYGNoYW5uZWwte059YCBmb3JtYXQAAJDHEAA+AAAAZmFpbGVkIHRvIHBhcnNlIGNoYW5uZWwgaWRlbnRpZmllcgAA2McQACIAAABJbnZhbGlkIGNoYW5uZWwgaWQgaW4gY291bnRlcnBhcnR5AAAEyBAAIgAAADDIEAAAAAAAY2hhbm5lbC0wyBAAAAAAADDIEAAAAAAA/QEAAAQAAAAEAAAA/gEAAENsaWVudElkcHJvb2YgaGVpZ2h0IGNhbm5vdCBiZSB6ZXJvAGjIEAAbAAAAcHJvb2YgY2Fubm90IGJlIGVtcHR5AAAAjMgQABUAAABFcnJvciBlbmNvZGluZyBwcm9vZqzIEAAUAAAAL2NsaWVudHNpYmMvbW9kdWxlcy9zcmMvY29yZS9pY3MyNF9ob3N0L3BhdGgucnMA0MgQACcAAADZAAAALgAAAGNvbnNlbnN1c1N0YXRlc2NsaWVudFR5cGVjbGllbnRTdGF0ZWNvbm5lY3Rpb25zcG9ydHNzZXF1ZW5jZXNjaGFubmVsRW5kc25leHRTZXF1ZW5jZVNlbmRuZXh0U2VxdWVuY2VSZWN2bmV4dFNlcXVlbmNlQWNrY29tbWl0bWVudHN1cGdyYWRlZElCQ1N0YXRldXBncmFkZWRDbGllbnR1cGdyYWRlZENvbnNTdGF0ZQAAALzJEAAAAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgp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bmRleFTUEAAYAAAAaW52YWxpZCBoYXNoOiBleHBlY3RlZCBoYXNoIHNpemUgdG8gYmUgMzIgYnl0ZXMAdNQQAC8AAABhYnNlbnQgY29tbWl0c2lnIGhhcyBub24temVybyB0aW1lc3RhbXAArNQQACcAAABpbnZhbGlkIGFjY291bnQgSUQgbGVuZ3RoAAAA3NQQABkAAABpbnZhbGlkIHNpZ25hdHVyZSBJRCBsZW5ndGgAANUQABsAAABpbnRlZ2VyIG92ZXJmbG93JNUQABAAAAB0aW1lc3RhbXAgbmFub3NlY29uZCBjb21wb25lbnQgaXMgb3V0IG9mIHJhbmdlAAA81RAALgAAAHRpbWVzdGFtcCBjb252ZXJzaW9uIGVycm9yAAB01RAAGgAAAG5vIHZvdGUgZm91bmQAAACY1RAADQAAAG5vIHByb3Bvc2FsIGZvdW5kAAAAsNUQABEAAABpbnZhbGlkIGFwcCBoYXNoIGxlbmd0aADM1RAAFwAAAGludmFsaWQgcGFydCBzZXQgaGVhZGVyAOzVEAAXAAAAbWlzc2luZyBoZWFkZXIgZmllbGQM1hAAFAAAAG1pc3NpbmcgZGF0YSBmaWVsZAAAKNYQABIAAABtaXNzaW5nIGV2aWRlbmNlIGZpZWxkAABE1hAAFgAAAG1pc3NpbmcgdGltZXN0YW1wIGZpZWxkAGTWEAAXAAAAbWlzc2luZyB2ZXJzaW9uAITWEAAPAAAAbWlzc2luZyBtYXhfYWdlX2R1cmF0aW9unNYQABgAAABtaXNzaW5nIHB1YmxpYyBrZXkAALzWEAASAAAAbWlzc2luZyB2YWxpZGF0b3IAAADY1hAAEQAAAG1pc3NpbmcgbGFzdCBjb21taXQgaW5mb/TWEAAYAAAAbWlzc2luZyBnZW5lc2lzIHRpbWUU1xAAFAAAAG1pc3NpbmcgY29uc2Vuc3VzIHBhcmFtczDXEAAYAAAAaW52YWxpZCB0aW1lc3RhbXA6IABQ1xAAEwAAAGludmFsaWQgYmxvY2s6IABs1xAADwAAAGxhc3RfYmxvY2tfaWQgaXMgbm90IG51bGwgb24gZmlyc3QgaGVpZ2h0AAAAhNcQACkAAABpbnZhbGlkIHNpZ25hdHVyZTogALjXEAATAAAAaW52YWxpZCB2YWxpZGF0b3IgYWRkcmVzcwAAANTXEAAZAAAAaW52YWxpZCBzaWduZWQgaGVhZGVyAAAA+NcQABUAAABpbnZhbGlkIGV2aWRlbmNlGNgQABAAAABpbnZhbGlkIHZhbGlkYXRvciBwYXJhbWV0ZXJzMNgQABwAAABpbnZhbGlkIHZlcnNpb24gcGFyYW1ldGVycwAAVNgQABoAAABpbnZhbGlkIEFCQ0kgcmVxdWVzdCB0eXBlAAAAeNgQABkAAABpbnZhbGlkIEFCQ0kgcmVzcG9uc2UgdHlwZQAAnNgQABoAAABpbnZhbGlkIGJsb2NrIGlkIGZsYWcAAADA2BAAFQAAAG5lZ2F0aXZlIHBvd2VyAADg2BAADgAAAHVuc3VwcG9ydGVkIGtleSB0eXBl+NgQABQAAAB1bnN1cHBvcnRlZCBDaGVja1R4IHR5cGUU2RAAGAAAAHVuc3VwcG9ydGVkIEFwcGx5U25hcHNob3RDaHVua1Jlc3VsdCB0eXBlAAAANNkQACkAAAB1bnN1cHBvcnRlZCBPZmZlclNuYXBzaG90Q2h1bmtSZXN1bHQgdHlwZQAAAGjZEAApAAAAdW5zdXBwb3J0ZWQgUHJvY2Vzc1Byb3Bvc2FsIHN0YXR1cyB2YWx1ZZzZEAAoAAAAbWlzbWF0Y2ggYmV0d2VlbiByYXcgdm90aW5nICgpIGFuZCBjb21wdXRlZCBvbmUgKCkAAMzZEAAdAAAA6dkQABQAAAD92RAAAQAAAG5lZ2F0aXZlIG1heF9hZ2VfbnVtX2Jsb2NrcwAY2hAAGwAAAHByb3Bvc2VyIHdpdGggYWRkcmVzcyAnJyBubyBmb3VuZCBpbiB2YWxpZGF0b3Igc2V0AAA82hAAFwAAAFPaEAAbAAAAdGltZSBwYXJzaW5nIGVycm9yAACA2hAAEgAAAHN1YnRsZSBlbmNvZGluZyBlcnJvcgAAAJzaEAAVAAAAc2lnbmF0dXJlIGVycm9yALzaEAAPAAAAdHJ1c3QgdGhyZXNob2xkIGlzIHRvbyBsYXJnZSAobXVzdCBiZSA8PSAxKQDU2hAAKwAAAHVuZGVmaW5lZCB0cnVzdCB0aHJlc2hvbGQgKGRlbm9taW5hdG9yIGNhbm5vdCBiZSAwKQAI2xAAMwAAAHRydXN0IHRocmVzaG9sZCB0b28gc21hbGwgKG11c3QgYmUgPj0gMS8zKQAARNsQACoAAABuZWdhdGl2ZSBudW1iZXIgb2YgaXRlbXMgaW4gcHJvb2YAAAB42xAAIQAAAG5lZ2F0aXZlIGl0ZW0gaW5kZXggaW4gcHJvb2ak2xAAHAAAALUCAAAEAAAABAAAALYCAABQb3dlclRpbWUAAAC3AgAABAAAAAQAAAC4AgAA9NsQAAAAAAAvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9mbGV4LWVycm9yLTAuNC40L3NyYy90cmFjZXJfaW1wbC9leXJlLnJz/NsQAGQAAAAKAAAACQAAALkCAAC6AgAAuwIAALwCAAC9AgAAvgIAAL8CAAAMAAAABAAAAGACAAC/AgAADAAAAAQAAABhAgAAYAIAAIjcEABiAgAAYwIAAGQCAABiAgAAZQIAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IAAAxNwQACoAAAAvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9iYXNlNjQtMC4xMy4xL3NyYy9lbmNvZGUucnMA+NwQAFcAAACSAAAAJwAAAHVzaXplIG92ZXJmbG93IHdoZW4gY2FsY3VsYXRpbmcgYjY0IGxlbmd0aAAA+NwQAFcAAACXAAAAGQAAAPjcEABXAAAAtgAAACAAAAD43BAAVwAAALcAAAAlAAAA+NwQAFcAAAD8AAAAHAAAAPjcEABXAAAA/QAAACEAAAD43BAAVwAAABMBAAAuAAAA+NwQAFcAAAATAQAACQAAAPjcEABXAAAAFAEAAAkAAAD43BAAVwAAAAsBAAAuAAAA+NwQAFcAAAALAQAACQAAAPjcEABXAAAADQEAAA8AAAD43BAAVwAAAAwBAAAJAAAA+NwQAFcAAAAPAQAACQAAAEltcG9zc2libGUgcmVtYWluZGVyXN4QABQAAAD43BAAVwAAACoBAAAWAAAA+NwQAFcAAAA7AQAACQAAACDhEADg4BAAoOAQAGDgEAAg4BAA4N8QAEludmFsaWQgbGFzdCBzeW1ib2wgLCBvZmZzZXQgLgAAsN4QABQAAADE3hAACQAAAM3eEAABAAAARW5jb2RlZCB0ZXh0IGNhbm5vdCBoYXZlIGEgNi1iaXQgcmVtYWluZGVyLgDo3hAAKwAAAEludmFsaWQgYnl0ZSAAAAAc3xAADQAAAMTeEAAJAAAAzd4QAAEAAABPdmVyZmxvdyB3aGVuIGNhbGN1bGF0aW5nIG51bWJlciBvZiBjaHVua3MgaW4gaW5wdXQvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9iYXNlNjQtMC4xMy4xL3NyYy9kZWNvZGUucnMAAHffEABXAAAAwAAAAAUAAAAhIiMkJSYnKCkqKywtMDEyMzQ1Njc4OUBBQkNERUZHSElKS0xNTlBRUlNUVVZYWVpbYGFiY2RlaGlqa2xtcHFyQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLC4vQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkuLzAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktX0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky////////////////////////////////////////////8AAQIDBAUGBwgJCgsM//8NDg8QERITFBUW////////FxgZGhscHR4fICEiIyQl/yYnKCkqKyz/LS4vMP////8xMjM0NTb//zc4OTo7PP//PT4//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z4/////NDU2Nzg5Ojs8Pf////////8AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGf///////xobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIz//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AATY3ODk6Ozw9Pj//////////AgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhv///////8cHR4fICEiIyQlJicoKSorLC0uLzAxMjM0Nf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAECAwQFBgcICQoL/////////wwNDg8QERITFBUWFxgZGhscHR4fICEiIyQl////////JicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Pv//NDU2Nzg5Ojs8Pf////////8AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGf////8//xobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIz//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8+////PzQ1Njc4OTo7PD3/////////AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBn///////8aGxwdHh8gISIjJCUmJygpKissLS4vMDEyM/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8g4RAA4OAQAKDgEABg4BAAIOAQAODfEABg5hAAYOUQAGDkEABg4xAAYOIQAGDhEAAvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9iYXNlNjQtMC4xMy4xL3NyYy9jaHVua2VkX2VuY29kZXIucnNjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAMICAAAIAAAABAAAAMMCAACQ5xAAYAAAAGgAAAAeAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQDEAgAAAAAAAAEAAAAXAAAAL2hvbWUvdnVvbmcvLmNhcmdvL2dpdC9jaGVja291dHMvdGVuZGVybWludC1ycy03YjJlNDQzM2EwMTE5YTMxL2U4MWY3YmYvcHJvdG8vc3JjL3NlcmlhbGl6ZXJzL3RpbWVzdGFtcC5ycwAAeOgQAGoAAABLAAAABQAAAC1UOi5aAAAA9OgQAAAAAAD06BAAAQAAAPToEAABAAAA9egQAAEAAAD26BAAAQAAAPboEAABAAAA9+gQAAEAAAD46BAAAQAAAAAAAAAgAAAACAAAAAIAAAAAAAAAAAAAAAQAAAADAAAAAQAAACAAAAAIAAAAAgAAAAAAAAAAAAAAAgAAAAMAAAACAAAA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Z0ludmFsaWRMZW5ndGhJbnZhbGlkSW9FcnJvckVuY29kaW5nSW52YWxpZENoZWNrc3VtSW52YWxpZAAAJAMAAAwAAAAEAAAAJQMAACYDAAAnAwAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQAoAwAAAAAAAAEAAAAXAAAAL3J1c3RjLzYyODQ5OThhMjY3N2Q3ZTNlODQyMGRiNzgzZjNhYTRmZDgwZDc0MjMvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAKj0EABLAAAA6AkAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2NoYXJfYm91bmRhcnkobmV3X2xlbimo9BAASwAAAP8EAAANAAAAYmFja3RyYWNlIGNhcHR1cmUgZmFpbGVkL2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYW55aG93LTEuMC42OS9zcmMvZXJyb3IucnMAAFz1EABWAAAAggMAAAkAAAAE9RAAAAAAADogAADM9RAAAgAAAAoKQ2F1c2VkIGJ5Otj1EAAMAAAACgAAAOz1EAABAAAACgoAAPj1EAACAAAAc3RhY2sgYmFja3RyYWNlOlNTdGFjayBiYWNrdHJhY2U6CgAAFfYQABEAAAApAwAABAAAAAQAAAAqAwAAL3J1c3RjLzYyODQ5OThhMjY3N2Q3ZTNlODQyMGRiNzgzZjNhYTRmZDgwZDc0MjMvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pbmRleC5ycwBA9hAATwAAAMYCAAAyAAAAQPYQAE8AAAC+AgAANAAAAC9ydXN0Yy82Mjg0OTk4YTI2NzdkN2UzZTg0MjBkYjc4M2YzYWE0ZmQ4MGQ3NDIzL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9tb2QucnOw9hAATAAAAM4HAAAkAAAAKwMAAAQAAAAEAAAALAMAAC0DAAAuAwAAOiAAACT3EAAAAAAAJPcQAAIAAAAAAAAAIAAAAAAAAAACAAAAAAAAAAAAAAAFAAAAAQAAACAgICAgICAgICAgAC8DAAAEAAAABAAAADADAAAxAwAAMgMAAC9ydXN0Yy82Mjg0OTk4YTI2NzdkN2UzZTg0MjBkYjc4M2YzYWE0ZmQ4MGQ3NDIzL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5yc2Fzc2VydGlvbiBmYWlsZWQ6IHNlbGYuaXNfY2hhcl9ib3VuZGFyeShuKQAAAHz3EABLAAAAEwcAAB0AAAB89xAASwAAABsHAAAdAAAAPHdhc206c3RyaXBwZWQ+L2hvbWUvdnVvbmcvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvZmluYWxpdHktZ3JhbmRwYS0wLjE2LjEvc3JjL2JpdGZpZWxkLnJzAAAj+BAAYwAAAD4AAAANAAAAI/gQAGMAAABRAAAACQAAAAAAAAAAAAAAQ29tbWl0VmFsaWRhdGlvblJlc3VsdHZhbGlkADMDAAAEAAAABAAAADQDAABudW1fcHJlY29tbWl0cwAAMwMAAAQAAAAEAAAANQMAAG51bV9kdXBsaWNhdGVkX3ByZWNvbW1pdHNudW1fZXF1aXZvY2F0aW9uc251bV9pbnZhbGlkX3ZvdGVyc3N1YnRyYWhlbmQgPiBtaW51ZW5kOyBxZWQvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9maW5hbGl0eS1ncmFuZHBhLTAuMTYuMS9zcmMvdm90ZXJfc2V0LnJzAAAAUfkQAGQAAACyAAAABQAAAEFsbG9jRXJybGF5b3V0AAA2AwAABAAAAAQAAAA3AwAAQ2FwYWNpdHlPdmVyZmxvdzsDAAAAAAAAAQAAADsDAAAAAAAAAQAAAPj5EAA8AwAAPQMAAD4DAAAvaG9tZS92dW9uZy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9sb2ctMC40LjE3L3NyYy9saWIucnNrZXktdmFsdWUgc3VwcG9ydCBpcyBleHBlcmltZW50YWwgYW5kIG11c3QgYmUgZW5hYmxlZCB1c2luZyB0aGUgYGt2X3Vuc3RhYmxlYCBmZWF0dXJlAAAg+hAAUQAAADgGAAAJAAAAPwMAAAgAAAAEAAAAQAMAAEEDAAAIAAAABAAAAEIDAABDAwAAOmNoaWxkX3N0b3JhZ2U6ZGVmYXVsdDoA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ICAgICBhdCCYBREAEAAAAP4CEQABAAAAfgERAAEAAABvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtwAURACgAAAAkAAAAY29uZHZhciB3YWl0IG5vdCBzdXBwb3J0ZWQAAPQFEQAaAAAAbGlicmFyeS9zdGQvc3JjL3N5cy93YXNtLy4uL3Vuc3VwcG9ydGVkL2xvY2tzL2NvbmR2YXIucnMYBhEAOAAAABQAAAAJAAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXhgBhEAIAAAAGxpYnJhcnkvc3RkL3NyYy9zeXMvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9tdXRleC5ycwAAiAYRADYAAAAUAAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHN0YXRlX2FuZF9xdWV1ZS5hZGRyKCkgJiBTVEFURV9NQVNLID09IFJVTk5JTkdPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAABAHEQAqAAAAAgAAAGxpYnJhcnkvc3RkL3NyYy9zeXNfY29tbW9uL29uY2UvZ2VuZXJpYy5ycwAASAcRACoAAAD4AAAACQAAAEgHEQAqAAAABQEAAB4AAAB+AwAACAAAAAQAAAB/AwAAbGlicmFyeS9zdGQvc3JjL3N5c19jb21tb24vdGhyZWFkX3Bhcmtlci9nZW5lcmljLnJzAKQHEQAzAAAAJwAAABUAAABpbmNvbnNpc3RlbnQgcGFyayBzdGF0ZQDoBxEAFwAAAKQHEQAzAAAANQAAABcAAABwYXJrIHN0YXRlIGNoYW5nZWQgdW5leHBlY3RlZGx5ABgIEQAfAAAApAcRADMAAAAyAAAAEQAAAGluY29uc2lzdGVudCBzdGF0ZSBpbiB1bnBhcmtQCBEAHAAAAKQHEQAzAAAAbAAAABIAAACkBxEAMwAAAHoAAAAOAAAAKCkAAIMDAAAEAAAABAAAAIQDAACFAwAAhgMAAIMDAAAEAAAABAAAAIcDAAAvcnVzdGMvNjI4NDk5OGEyNjc3ZDdlM2U4NDIwZGI3ODNmM2FhNGZkODBkNzQyMy9saWJyYXJ5L2NvcmUvc3JjL29wcy9mdW5jdGlvbi5yc8AIEQBQAAAAUwEAAAUAAAAvcnVz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" + } + } + ], + "status": 3, + "final_tally_result": { + "yes_count": "10030009994127689", + "abstain_count": "0", + "no_count": "0", + "no_with_veto_count": "0" + }, + "submit_time": "2024-04-27T09:08:42.330512Z", + "deposit_end_time": "2024-04-29T09:08:42.330512Z", + "total_deposit": [ + { + "denom": "ppica", + "amount": "10000000000" + } + ], + "voting_start_time": "2024-04-27T09:08:42.330512Z", + "voting_end_time": "2024-04-27T09:09:02.330512Z", + "title": "test", + "summary": "none", + "proposer": "pica1hj5fveer5cjtn4wd6wstzugjfdxzl0xpas3hgy" + } +} diff --git a/x/ibc-hooks/hooks.go b/x/ibc-hooks/hooks.go index 813c767fa..db99aa230 100644 --- a/x/ibc-hooks/hooks.go +++ b/x/ibc-hooks/hooks.go @@ -3,12 +3,12 @@ package ibchooks import ( // external libraries sdk "github.com/cosmos/cosmos-sdk/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" // ibc-go - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" ) type Hooks interface{} diff --git a/x/ibc-hooks/ibc_module.go b/x/ibc-hooks/ibc_module.go index e21558919..b7c1e68e4 100644 --- a/x/ibc-hooks/ibc_module.go +++ b/x/ibc-hooks/ibc_module.go @@ -4,13 +4,13 @@ import ( // external libraries sdk "github.com/cosmos/cosmos-sdk/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" // ibc-go - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" ) var _ porttypes.Middleware = &IBCMiddleware{} diff --git a/x/ibc-hooks/ics4_middleware.go b/x/ibc-hooks/ics4_middleware.go index e9ddedd82..d27eaac24 100644 --- a/x/ibc-hooks/ics4_middleware.go +++ b/x/ibc-hooks/ics4_middleware.go @@ -4,12 +4,12 @@ import ( // external libraries sdk "github.com/cosmos/cosmos-sdk/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" // ibc-go - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" ) var _ porttypes.ICS4Wrapper = &ICS4Middleware{} diff --git a/x/ibc-hooks/keeper/keeper.go b/x/ibc-hooks/keeper/keeper.go index 2462a130f..4f2508214 100644 --- a/x/ibc-hooks/keeper/keeper.go +++ b/x/ibc-hooks/keeper/keeper.go @@ -3,8 +3,8 @@ package keeper import ( "fmt" - "github.com/cometbft/cometbft/libs/log" - storetypes "github.com/cosmos/cosmos-sdk/store/types" + "cosmossdk.io/log" + storetypes "cosmossdk.io/store/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/address" diff --git a/x/ibc-hooks/module.go b/x/ibc-hooks/module.go index 779f67846..739d2f9df 100644 --- a/x/ibc-hooks/module.go +++ b/x/ibc-hooks/module.go @@ -73,6 +73,12 @@ type AppModule struct { AppModuleBasic } +// IsAppModule implements module.AppModule. +func (AppModule) IsAppModule() {} + +// IsOnePerModuleType implements module.AppModule. +func (AppModule) IsOnePerModuleType() {} + // NewAppModule creates a new AppModule object. func NewAppModule() AppModule { return AppModule{ @@ -108,15 +114,5 @@ func (am AppModule) ExportGenesis(_ sdk.Context, _ codec.JSONCodec) json.RawMess return json.RawMessage([]byte("{}")) } -// BeginBlock returns the begin blocker for the ibc-hooks module. -func (am AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) { -} - -// EndBlock returns the end blocker for the ibc-hooks module. It returns no validator -// updates. -func (AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - return []abci.ValidatorUpdate{} -} - // ConsensusVersion implements AppModule/ConsensusVersion. func (AppModule) ConsensusVersion() uint64 { return 1 } diff --git a/x/ibc-hooks/relay_test.go b/x/ibc-hooks/relay_test.go deleted file mode 100644 index 338ed6603..000000000 --- a/x/ibc-hooks/relay_test.go +++ /dev/null @@ -1,237 +0,0 @@ -package ibchooks_test - -import ( - "fmt" - "testing" - "time" - - sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - "github.com/stretchr/testify/suite" - - customibctesting "github.com/notional-labs/composable/v6/app/ibctesting" - ibchookskeeper "github.com/notional-labs/composable/v6/x/ibc-hooks/keeper" -) - -// TODO: use testsuite here. -type IBCHooksTestSuite struct { - suite.Suite - - coordinator *customibctesting.Coordinator - - // testing chains used for convenience and readability - chainA *customibctesting.TestChain - chainB *customibctesting.TestChain - chainC *customibctesting.TestChain -} - -func (suite *IBCHooksTestSuite) SetupTest() { - suite.coordinator = customibctesting.NewCoordinator(suite.T(), 4) - suite.chainA = suite.coordinator.GetChain(customibctesting.GetChainID(1)) - suite.chainB = suite.coordinator.GetChain(customibctesting.GetChainID(2)) - suite.chainC = suite.coordinator.GetChain(customibctesting.GetChainID(3)) -} - -func NewTransferPath(chainA, chainB *customibctesting.TestChain) *customibctesting.Path { - path := customibctesting.NewPath(chainA, chainB) - path.EndpointA.ChannelConfig.PortID = customibctesting.TransferPort - path.EndpointB.ChannelConfig.PortID = customibctesting.TransferPort - path.EndpointA.ChannelConfig.Version = transfertypes.Version - path.EndpointB.ChannelConfig.Version = transfertypes.Version - - return path -} - -func TestKeeperTestSuite(t *testing.T) { - suite.Run(t, new(IBCHooksTestSuite)) -} - -func (suite *IBCHooksTestSuite) TestRecvHooks() { - var ( - transferAmount = sdk.NewInt(1000000000) - timeoutHeight = clienttypes.NewHeight(1, 110) - // when transfer via sdk transfer from A (module) -> B (contract) - // nativeTokenSendOnChainA = sdk.NewCoin(sdk.DefaultBondDenom, transferAmount) - ) - - suite.SetupTest() // reset - - path := NewTransferPath(suite.chainA, suite.chainB) - suite.coordinator.Setup(path) - - // store code - suite.chainB.StoreContractCode(&suite.Suite, "../../tests/ibc-hooks/bytecode/counter.wasm") - // instancetiate contract - addr := suite.chainB.InstantiateContract(&suite.Suite, `{"count": 0}`, 1) - suite.Require().NotEmpty(addr) - - memo := fmt.Sprintf(`{"wasm": {"contract": "%s", "msg": {"increment": {} } } }`, addr) - - msg := transfertypes.NewMsgTransfer( - path.EndpointA.ChannelConfig.PortID, - path.EndpointA.ChannelID, - sdk.NewCoin(sdk.DefaultBondDenom, transferAmount), - suite.chainA.SenderAccount.GetAddress().String(), - addr.String(), - timeoutHeight, - 0, - memo, - ) - _, err := suite.chainA.SendMsgs(msg) - suite.Require().NoError(err) - suite.Require().NoError(err, path.EndpointB.UpdateClient()) - - // then - suite.Require().Equal(1, len(suite.chainA.PendingSendPackets)) - suite.Require().Equal(0, len(suite.chainB.PendingSendPackets)) - - // and when relay to chain B and handle Ack on chain A - err = suite.coordinator.RelayAndAckPendingPackets(path) - suite.Require().NoError(err) - - // then - suite.Require().Equal(0, len(suite.chainA.PendingSendPackets)) - suite.Require().Equal(0, len(suite.chainB.PendingSendPackets)) - - senderLocalAcc, err := ibchookskeeper.DeriveIntermediateSender("channel-0", suite.chainA.SenderAccount.GetAddress().String(), "cosmos") - suite.Require().NoError(err) - - state := suite.chainB.QueryContract(&suite.Suite, addr, []byte(fmt.Sprintf(`{"get_count": {"addr": "%s"}}`, senderLocalAcc))) - suite.Require().Equal(`{"count":0}`, state) - - state = suite.chainB.QueryContract(&suite.Suite, addr, []byte(fmt.Sprintf(`{"get_total_funds": {"addr": "%s"}}`, senderLocalAcc))) - suite.Require().Equal(`{"total_funds":[{"denom":"ibc/C053D637CCA2A2BA030E2C5EE1B28A16F71CCB0E45E8BE52766DC1B241B77878","amount":"1000000000"}]}`, state) -} - -func (suite *IBCHooksTestSuite) TestAckHooks() { - var ( - transferAmount = sdk.NewInt(1000000000) - timeoutHeight = clienttypes.NewHeight(0, 110) - // when transfer via sdk transfer from A (module) -> B (contract) - // nativeTokenSendOnChainA = sdk.NewCoin(sdk.DefaultBondDenom, transferAmount) - ) - - suite.SetupTest() // reset - - path := NewTransferPath(suite.chainA, suite.chainB) - suite.coordinator.Setup(path) - - // store code - suite.chainA.StoreContractCode(&suite.Suite, "../../tests/ibc-hooks/bytecode/counter.wasm") - // instancetiate contract - addr := suite.chainA.InstantiateContract(&suite.Suite, `{"count": 0}`, 1) - suite.Require().NotEmpty(addr) - - fmt.Println(addr.String()) - - // Generate swap instructions for the contract - callbackMemo := fmt.Sprintf(`{"ibc_callback":"%s"}`, addr) - - msg := transfertypes.NewMsgTransfer( - path.EndpointA.ChannelConfig.PortID, - path.EndpointA.ChannelID, - sdk.NewCoin(sdk.DefaultBondDenom, transferAmount), - suite.chainA.SenderAccount.GetAddress().String(), - addr.String(), - timeoutHeight, - 0, - callbackMemo, - ) - _, err := suite.chainA.SendMsgs(msg) - suite.Require().NoError(err) - suite.Require().NoError(err, path.EndpointB.UpdateClient()) - - // then - suite.Require().Equal(1, len(suite.chainA.PendingSendPackets)) - suite.Require().Equal(0, len(suite.chainB.PendingSendPackets)) - - // and when relay to chain B and handle Ack on chain A - err = suite.coordinator.RelayAndAckPendingPackets(path) - suite.Require().NoError(err) - - // then - suite.Require().Equal(0, len(suite.chainA.PendingSendPackets)) - suite.Require().Equal(0, len(suite.chainB.PendingSendPackets)) - - state := suite.chainA.QueryContract( - &suite.Suite, addr, - []byte(fmt.Sprintf(`{"get_count": {"addr": "%s"}}`, addr))) - suite.Require().Equal(`{"count":1}`, state) - - _, err = suite.chainA.SendMsgs(msg) - suite.Require().NoError(err) - suite.Require().NoError(err, path.EndpointB.UpdateClient()) - - // then - suite.Require().Equal(1, len(suite.chainA.PendingSendPackets)) - suite.Require().Equal(0, len(suite.chainB.PendingSendPackets)) - - // and when relay to chain B and handle Ack on chain A - err = suite.coordinator.RelayAndAckPendingPackets(path) - suite.Require().NoError(err) - - // then - suite.Require().Equal(0, len(suite.chainA.PendingSendPackets)) - suite.Require().Equal(0, len(suite.chainB.PendingSendPackets)) - - state = suite.chainA.QueryContract( - &suite.Suite, addr, - []byte(fmt.Sprintf(`{"get_count": {"addr": "%s"}}`, addr))) - suite.Require().Equal(`{"count":2}`, state) -} - -func (suite *IBCHooksTestSuite) TestTimeoutHooks() { - var ( - transferAmount = sdk.NewInt(1000000000) - timeoutHeight = clienttypes.NewHeight(0, 500) - // when transfer via sdk transfer from A (module) -> B (contract) - // nativeTokenSendOnChainA = sdk.NewCoin(sdk.DefaultBondDenom, transferAmount) - ) - - suite.SetupTest() // reset - - path := NewTransferPath(suite.chainA, suite.chainB) - suite.coordinator.Setup(path) - - // store code - suite.chainA.StoreContractCode(&suite.Suite, "../../tests/ibc-hooks/bytecode/counter.wasm") - // instancetiate contract - addr := suite.chainA.InstantiateContract(&suite.Suite, `{"count": 0}`, 1) - suite.Require().NotEmpty(addr) - - fmt.Println(addr.String()) - - // Generate swap instructions for the contract - callbackMemo := fmt.Sprintf(`{"ibc_callback":"%s"}`, addr) - - msg := transfertypes.NewMsgTransfer( - path.EndpointA.ChannelConfig.PortID, - path.EndpointA.ChannelID, - sdk.NewCoin(sdk.DefaultBondDenom, transferAmount), - suite.chainA.SenderAccount.GetAddress().String(), - addr.String(), - timeoutHeight, - uint64(suite.coordinator.CurrentTime.Add(time.Minute).UnixNano()), - callbackMemo, - ) - sdkResult, err := suite.chainA.SendMsgs(msg) - suite.Require().NoError(err) - - packet, err := customibctesting.ParsePacketFromEvents(sdkResult.GetEvents()) - suite.Require().NoError(err) - - // Move chainB forward one block - suite.chainB.NextBlock() - // One month later - suite.coordinator.IncrementTimeBy(time.Hour) - err = path.EndpointA.UpdateClient() - suite.Require().NoError(err) - - err = path.EndpointA.TimeoutPacket(packet) - suite.Require().NoError(err) - - // The test contract will increment the counter for itself by 10 when a packet times out - state := suite.chainA.QueryContract(&suite.Suite, addr, []byte(fmt.Sprintf(`{"get_count": {"addr": "%s"}}`, addr))) - suite.Require().Equal(`{"count":10}`, state) -} diff --git a/x/ibc-hooks/utils.go b/x/ibc-hooks/utils.go index 38865fccf..2a803a528 100644 --- a/x/ibc-hooks/utils.go +++ b/x/ibc-hooks/utils.go @@ -5,9 +5,9 @@ import ( "fmt" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" ) const IbcAcknowledgementErrorType = "ibc-acknowledgement-error" diff --git a/x/ibc-hooks/wasm_hook.go b/x/ibc-hooks/wasm_hook.go index bc239f02c..48cdbeaa1 100644 --- a/x/ibc-hooks/wasm_hook.go +++ b/x/ibc-hooks/wasm_hook.go @@ -6,17 +6,18 @@ import ( wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" "github.com/notional-labs/composable/v6/x/ibc-hooks/keeper" "github.com/notional-labs/composable/v6/x/ibc-hooks/types" errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" ) type ContractAck struct { @@ -91,7 +92,7 @@ func (h WasmHooks) OnRecvPacketOverride(im IBCMiddleware, ctx sdk.Context, packe return ack } - amount, ok := sdk.NewIntFromString(data.GetAmount()) + amount, ok := sdkmath.NewIntFromString(data.GetAmount()) if !ok { // This should never happen, as it should've been caught in the underlaying call to OnRecvPacket, // but returning here for completeness diff --git a/x/ibctransfermiddleware/keeper/keeper.go b/x/ibctransfermiddleware/keeper/keeper.go index 597cf30a4..6922415da 100644 --- a/x/ibctransfermiddleware/keeper/keeper.go +++ b/x/ibctransfermiddleware/keeper/keeper.go @@ -1,11 +1,11 @@ package keeper import ( - "github.com/cometbft/cometbft/libs/log" + "cosmossdk.io/log" "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/x/ibctransfermiddleware/module.go b/x/ibctransfermiddleware/module.go index 1f46d6364..8a15a6a89 100644 --- a/x/ibctransfermiddleware/module.go +++ b/x/ibctransfermiddleware/module.go @@ -89,6 +89,12 @@ type AppModule struct { keeper keeper.Keeper } +// IsAppModule implements module.AppModule. +func (AppModule) IsAppModule() {} + +// IsOnePerModuleType implements module.AppModule. +func (AppModule) IsOnePerModuleType() {} + // NewAppModule creates a new AppModule object. If the InflationCalculationFn // argument is nil, then the SDK's default inflation function will be used. func NewAppModule(cdc codec.Codec, keeper keeper.Keeper) AppModule { @@ -133,11 +139,6 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw // ConsensusVersion implements AppModule/ConsensusVersion. func (AppModule) ConsensusVersion() uint64 { return 1 } -// BeginBlock returns the begin blocker for the staking middleware module. -func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) { - // BeginBlocker(ctx, am.keeper) ??? -} - // AppModuleSimulation functions // GenerateGenesisState creates a randomized GenState of the staking middleware module. func (AppModule) GenerateGenesisState(simState *module.SimulationState) {} @@ -148,7 +149,7 @@ func (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedP } // RegisterStoreDecoder registers a decoder for staking middleware module's types. -func (am AppModule) RegisterStoreDecoder(_ sdk.StoreDecoderRegistry) {} +func (am AppModule) RegisterStoreDecoder(registry simtypes.StoreDecoderRegistry) {} // WeightedOperations doesn't return any staking middleware module operation. func (AppModule) WeightedOperations(_ module.SimulationState) []simtypes.WeightedOperation { diff --git a/x/ibctransfermiddleware/types/codec.go b/x/ibctransfermiddleware/types/codec.go index e22a34195..e54896237 100644 --- a/x/ibctransfermiddleware/types/codec.go +++ b/x/ibctransfermiddleware/types/codec.go @@ -6,9 +6,6 @@ import ( codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" "github.com/cosmos/cosmos-sdk/types/msgservice" - authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec" - govcodec "github.com/cosmos/cosmos-sdk/x/gov/codec" - groupcodec "github.com/cosmos/cosmos-sdk/x/group/codec" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -39,7 +36,7 @@ func init() { // Register all Amino interfaces and concrete types on the authz and gov Amino codec so that this can later be // used to properly serialize MsgGrant, MsgExec and MsgSubmitProposal instances - RegisterLegacyAminoCodec(authzcodec.Amino) - RegisterLegacyAminoCodec(govcodec.Amino) - RegisterLegacyAminoCodec(groupcodec.Amino) + // RegisterLegacyAminoCodec(authzcodec.Amino) + // RegisterLegacyAminoCodec(govcodec.Amino) + // RegisterLegacyAminoCodec(groupcodec.Amino) } diff --git a/x/mint/abci.go b/x/mint/abci.go index 42964667d..d322e6723 100644 --- a/x/mint/abci.go +++ b/x/mint/abci.go @@ -19,8 +19,8 @@ func BeginBlocker(ctx sdk.Context, k keeper.Keeper, ic types.InflationCalculatio params := k.GetParams(ctx) // recalculate inflation rate - totalStakingSupply := k.StakingTokenSupply(ctx) - bondedRatio := k.BondedRatio(ctx) + totalStakingSupply, _ := k.StakingTokenSupply(ctx) + bondedRatio, _ := k.BondedRatio(ctx) minter.Inflation = ic(ctx, minter, params, bondedRatio, totalStakingSupply) minter.AnnualProvisions = minter.NextAnnualProvisions(params, totalStakingSupply) k.SetMinter(ctx, minter) @@ -28,7 +28,6 @@ func BeginBlocker(ctx sdk.Context, k keeper.Keeper, ic types.InflationCalculatio // calculate how many we would mint, but we dont mint them, we take them from the prefunded account mintedCoin := minter.BlockProvision(params) mintedCoins := sdk.NewCoins(mintedCoin) - // send the minted coins to the fee collector account err := k.AddCollectedFees(ctx, mintedCoins) if err != nil { diff --git a/x/mint/client/cli/query_test.go b/x/mint/client/cli/query_test.go index abf592e43..b5c87c937 100644 --- a/x/mint/client/cli/query_test.go +++ b/x/mint/client/cli/query_test.go @@ -1,207 +1,207 @@ package cli_test -import ( - "context" - "fmt" - "io" - "strings" - "testing" - - rpcclientmock "github.com/cometbft/cometbft/rpc/client/mock" - "github.com/stretchr/testify/require" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - - "github.com/cosmos/cosmos-sdk/crypto/keyring" - testutilmod "github.com/cosmos/cosmos-sdk/types/module/testutil" - "github.com/cosmos/cosmos-sdk/x/mint" - mintcli "github.com/cosmos/cosmos-sdk/x/mint/client/cli" -) - -func TestGetCmdQueryParams(t *testing.T) { - encCfg := testutilmod.MakeTestEncodingConfig(mint.AppModuleBasic{}) - kr := keyring.NewInMemory(encCfg.Codec) - baseCtx := client.Context{}. - WithKeyring(kr). - WithTxConfig(encCfg.TxConfig). - WithCodec(encCfg.Codec). - WithClient(clitestutil.MockTendermintRPC{Client: rpcclientmock.Client{}}). - WithAccountRetriever(client.MockAccountRetriever{}). - WithOutput(io.Discard). - WithChainID("test-chain") - - cmd := mintcli.GetCmdQueryParams() - - testCases := []struct { - name string - flagArgs []string - expCmdOutput string - expectedOutput string - }{ - { - "json output", - []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=json", flags.FlagOutput)}, - `[--height=1 --output=json]`, - `{"mint_denom":"","inflation_rate_change":"0","inflation_max":"0","inflation_min":"0","goal_bonded":"0","blocks_per_year":"0"}`, - }, - { - "text output", - []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=text", flags.FlagOutput)}, - `[--height=1 --output=text]`, - `blocks_per_year: "0" -goal_bonded: "0" -inflation_max: "0" -inflation_min: "0" -inflation_rate_change: "0" -mint_denom: ""`, - }, - } - - for _, tc := range testCases { - tc := tc - - t.Run(tc.name, func(t *testing.T) { - ctx := svrcmd.CreateExecuteContext(context.Background()) - - cmd.SetOut(io.Discard) - require.NotNil(t, cmd) - - cmd.SetContext(ctx) - cmd.SetArgs(tc.flagArgs) - - require.NoError(t, client.SetCmdClientContextHandler(baseCtx, cmd)) - - if len(tc.flagArgs) != 0 { - require.Contains(t, fmt.Sprint(cmd), "params [] [] Query the current minting parameters") - require.Contains(t, fmt.Sprint(cmd), tc.expCmdOutput) - } - - out, err := clitestutil.ExecTestCLICmd(baseCtx, cmd, tc.flagArgs) - require.NoError(t, err) - require.Equal(t, tc.expectedOutput, strings.TrimSpace(out.String())) - }) - } -} - -func TestGetCmdQueryInflation(t *testing.T) { - encCfg := testutilmod.MakeTestEncodingConfig(mint.AppModuleBasic{}) - kr := keyring.NewInMemory(encCfg.Codec) - baseCtx := client.Context{}. - WithKeyring(kr). - WithTxConfig(encCfg.TxConfig). - WithCodec(encCfg.Codec). - WithClient(clitestutil.MockTendermintRPC{Client: rpcclientmock.Client{}}). - WithAccountRetriever(client.MockAccountRetriever{}). - WithOutput(io.Discard). - WithChainID("test-chain") - - cmd := mintcli.GetCmdQueryInflation() - - testCases := []struct { - name string - flagArgs []string - expCmdOutput string - expectedOutput string - }{ - { - "json output", - []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=json", flags.FlagOutput)}, - `[--height=1 --output=json]`, - ``, - }, - { - "text output", - []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=text", flags.FlagOutput)}, - `[--height=1 --output=text]`, - ``, - }, - } - - for _, tc := range testCases { - tc := tc - - t.Run(tc.name, func(t *testing.T) { - ctx := svrcmd.CreateExecuteContext(context.Background()) - - cmd.SetOut(io.Discard) - require.NotNil(t, cmd) - - cmd.SetContext(ctx) - cmd.SetArgs(tc.flagArgs) - - require.NoError(t, client.SetCmdClientContextHandler(baseCtx, cmd)) - - if len(tc.flagArgs) != 0 { - require.Contains(t, fmt.Sprint(cmd), "inflation [] [] Query the current minting inflation value") - require.Contains(t, fmt.Sprint(cmd), tc.expCmdOutput) - } - - out, err := clitestutil.ExecTestCLICmd(baseCtx, cmd, tc.flagArgs) - require.NoError(t, err) - require.Equal(t, tc.expectedOutput, strings.TrimSpace(out.String())) - }) - } -} - -func TestGetCmdQueryAnnualProvisions(t *testing.T) { - encCfg := testutilmod.MakeTestEncodingConfig(mint.AppModuleBasic{}) - kr := keyring.NewInMemory(encCfg.Codec) - baseCtx := client.Context{}. - WithKeyring(kr). - WithTxConfig(encCfg.TxConfig). - WithCodec(encCfg.Codec). - WithClient(clitestutil.MockTendermintRPC{Client: rpcclientmock.Client{}}). - WithAccountRetriever(client.MockAccountRetriever{}). - WithOutput(io.Discard). - WithChainID("test-chain") - - cmd := mintcli.GetCmdQueryAnnualProvisions() - - testCases := []struct { - name string - flagArgs []string - expCmdOutput string - expectedOutput string - }{ - { - "json output", - []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=json", flags.FlagOutput)}, - `[--height=1 --output=json]`, - ``, - }, - { - "text output", - []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=text", flags.FlagOutput)}, - `[--height=1 --output=text]`, - ``, - }, - } - - for _, tc := range testCases { - tc := tc - - t.Run(tc.name, func(t *testing.T) { - ctx := svrcmd.CreateExecuteContext(context.Background()) - - cmd.SetOut(io.Discard) - require.NotNil(t, cmd) - - cmd.SetContext(ctx) - cmd.SetArgs(tc.flagArgs) - - require.NoError(t, client.SetCmdClientContextHandler(baseCtx, cmd)) - - if len(tc.flagArgs) != 0 { - require.Contains(t, fmt.Sprint(cmd), "annual-provisions [] [] Query the current minting annual provisions value") - require.Contains(t, fmt.Sprint(cmd), tc.expCmdOutput) - } - - out, err := clitestutil.ExecTestCLICmd(baseCtx, cmd, tc.flagArgs) - require.NoError(t, err) - require.Equal(t, tc.expectedOutput, strings.TrimSpace(out.String())) - }) - } -} +// import ( +// "context" +// "fmt" +// "io" +// "strings" +// "testing" + +// rpcclientmock "github.com/cometbft/cometbft/rpc/client/mock" +// "github.com/stretchr/testify/require" + +// "github.com/cosmos/cosmos-sdk/client" +// "github.com/cosmos/cosmos-sdk/client/flags" +// svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" +// clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" + +// "github.com/cosmos/cosmos-sdk/crypto/keyring" +// testutilmod "github.com/cosmos/cosmos-sdk/types/module/testutil" +// "github.com/cosmos/cosmos-sdk/x/mint" +// mintcli "github.com/cosmos/cosmos-sdk/x/mint/client/cli" +// ) + +// func TestGetCmdQueryParams(t *testing.T) { +// encCfg := testutilmod.MakeTestEncodingConfig(mint.AppModuleBasic{}) +// kr := keyring.NewInMemory(encCfg.Codec) +// baseCtx := client.Context{}. +// WithKeyring(kr). +// WithTxConfig(encCfg.TxConfig). +// WithCodec(encCfg.Codec). +// WithClient(clitestutil.MockTendermintRPC{Client: rpcclientmock.Client{}}). +// WithAccountRetriever(client.MockAccountRetriever{}). +// WithOutput(io.Discard). +// WithChainID("test-chain") + +// cmd := mintcli.GetCmdQueryParams() + +// testCases := []struct { +// name string +// flagArgs []string +// expCmdOutput string +// expectedOutput string +// }{ +// { +// "json output", +// []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=json", flags.FlagOutput)}, +// `[--height=1 --output=json]`, +// `{"mint_denom":"","inflation_rate_change":"0","inflation_max":"0","inflation_min":"0","goal_bonded":"0","blocks_per_year":"0"}`, +// }, +// { +// "text output", +// []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=text", flags.FlagOutput)}, +// `[--height=1 --output=text]`, +// `blocks_per_year: "0" +// goal_bonded: "0" +// inflation_max: "0" +// inflation_min: "0" +// inflation_rate_change: "0" +// mint_denom: ""`, +// }, +// } + +// for _, tc := range testCases { +// tc := tc + +// t.Run(tc.name, func(t *testing.T) { +// ctx := svrcmd.CreateExecuteContext(context.Background()) + +// cmd.SetOut(io.Discard) +// require.NotNil(t, cmd) + +// cmd.SetContext(ctx) +// cmd.SetArgs(tc.flagArgs) + +// require.NoError(t, client.SetCmdClientContextHandler(baseCtx, cmd)) + +// if len(tc.flagArgs) != 0 { +// require.Contains(t, fmt.Sprint(cmd), "params [] [] Query the current minting parameters") +// require.Contains(t, fmt.Sprint(cmd), tc.expCmdOutput) +// } + +// out, err := clitestutil.ExecTestCLICmd(baseCtx, cmd, tc.flagArgs) +// require.NoError(t, err) +// require.Equal(t, tc.expectedOutput, strings.TrimSpace(out.String())) +// }) +// } +// } + +// func TestGetCmdQueryInflation(t *testing.T) { +// encCfg := testutilmod.MakeTestEncodingConfig(mint.AppModuleBasic{}) +// kr := keyring.NewInMemory(encCfg.Codec) +// baseCtx := client.Context{}. +// WithKeyring(kr). +// WithTxConfig(encCfg.TxConfig). +// WithCodec(encCfg.Codec). +// WithClient(clitestutil.MockTendermintRPC{Client: rpcclientmock.Client{}}). +// WithAccountRetriever(client.MockAccountRetriever{}). +// WithOutput(io.Discard). +// WithChainID("test-chain") + +// cmd := mintcli.GetCmdQueryInflation() + +// testCases := []struct { +// name string +// flagArgs []string +// expCmdOutput string +// expectedOutput string +// }{ +// { +// "json output", +// []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=json", flags.FlagOutput)}, +// `[--height=1 --output=json]`, +// ``, +// }, +// { +// "text output", +// []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=text", flags.FlagOutput)}, +// `[--height=1 --output=text]`, +// ``, +// }, +// } + +// for _, tc := range testCases { +// tc := tc + +// t.Run(tc.name, func(t *testing.T) { +// ctx := svrcmd.CreateExecuteContext(context.Background()) + +// cmd.SetOut(io.Discard) +// require.NotNil(t, cmd) + +// cmd.SetContext(ctx) +// cmd.SetArgs(tc.flagArgs) + +// require.NoError(t, client.SetCmdClientContextHandler(baseCtx, cmd)) + +// if len(tc.flagArgs) != 0 { +// require.Contains(t, fmt.Sprint(cmd), "inflation [] [] Query the current minting inflation value") +// require.Contains(t, fmt.Sprint(cmd), tc.expCmdOutput) +// } + +// out, err := clitestutil.ExecTestCLICmd(baseCtx, cmd, tc.flagArgs) +// require.NoError(t, err) +// require.Equal(t, tc.expectedOutput, strings.TrimSpace(out.String())) +// }) +// } +// } + +// func TestGetCmdQueryAnnualProvisions(t *testing.T) { +// encCfg := testutilmod.MakeTestEncodingConfig(mint.AppModuleBasic{}) +// kr := keyring.NewInMemory(encCfg.Codec) +// baseCtx := client.Context{}. +// WithKeyring(kr). +// WithTxConfig(encCfg.TxConfig). +// WithCodec(encCfg.Codec). +// WithClient(clitestutil.MockTendermintRPC{Client: rpcclientmock.Client{}}). +// WithAccountRetriever(client.MockAccountRetriever{}). +// WithOutput(io.Discard). +// WithChainID("test-chain") + +// cmd := mintcli.GetCmdQueryAnnualProvisions() + +// testCases := []struct { +// name string +// flagArgs []string +// expCmdOutput string +// expectedOutput string +// }{ +// { +// "json output", +// []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=json", flags.FlagOutput)}, +// `[--height=1 --output=json]`, +// ``, +// }, +// { +// "text output", +// []string{fmt.Sprintf("--%s=1", flags.FlagHeight), fmt.Sprintf("--%s=text", flags.FlagOutput)}, +// `[--height=1 --output=text]`, +// ``, +// }, +// } + +// for _, tc := range testCases { +// tc := tc + +// t.Run(tc.name, func(t *testing.T) { +// ctx := svrcmd.CreateExecuteContext(context.Background()) + +// cmd.SetOut(io.Discard) +// require.NotNil(t, cmd) + +// cmd.SetContext(ctx) +// cmd.SetArgs(tc.flagArgs) + +// require.NoError(t, client.SetCmdClientContextHandler(baseCtx, cmd)) + +// if len(tc.flagArgs) != 0 { +// require.Contains(t, fmt.Sprint(cmd), "annual-provisions [] [] Query the current minting annual provisions value") +// require.Contains(t, fmt.Sprint(cmd), tc.expCmdOutput) +// } + +// out, err := clitestutil.ExecTestCLICmd(baseCtx, cmd, tc.flagArgs) +// require.NoError(t, err) +// require.Equal(t, tc.expectedOutput, strings.TrimSpace(out.String())) +// }) +// } +// } diff --git a/x/mint/keeper/keeper.go b/x/mint/keeper/keeper.go index fb0988fcf..076d411ba 100644 --- a/x/mint/keeper/keeper.go +++ b/x/mint/keeper/keeper.go @@ -3,11 +3,11 @@ package keeper import ( "fmt" + "cosmossdk.io/log" "cosmossdk.io/math" - "github.com/cometbft/cometbft/libs/log" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/notional-labs/composable/v6/x/mint/types" @@ -128,13 +128,13 @@ func (k Keeper) GetParams(ctx sdk.Context) (p types.Params) { // StakingTokenSupply implements an alias call to the underlying staking keeper's // StakingTokenSupply to be used in BeginBlocker. -func (k Keeper) StakingTokenSupply(ctx sdk.Context) math.Int { +func (k Keeper) StakingTokenSupply(ctx sdk.Context) (math.Int, error) { return k.stakingKeeper.StakingTokenSupply(ctx) } // BondedRatio implements an alias call to the underlying staking keeper's // BondedRatio to be used in BeginBlocker. -func (k Keeper) BondedRatio(ctx sdk.Context) math.LegacyDec { +func (k Keeper) BondedRatio(ctx sdk.Context) (math.LegacyDec, error) { return k.stakingKeeper.BondedRatio(ctx) } diff --git a/x/mint/module.go b/x/mint/module.go index 5205a408d..194fc198c 100644 --- a/x/mint/module.go +++ b/x/mint/module.go @@ -15,7 +15,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/notional-labs/composable/v6/x/mint/client/cli" "github.com/notional-labs/composable/v6/x/mint/keeper" "github.com/notional-labs/composable/v6/x/mint/simulation" @@ -95,6 +94,12 @@ type AppModule struct { inflationCalculator types.InflationCalculationFn } +// IsAppModule implements module.AppModule. +func (AppModule) IsAppModule() {} + +// IsOnePerModuleType implements module.AppModule. +func (AppModule) IsOnePerModuleType() {} + // NewAppModule creates a new AppModule object. If the InflationCalculationFn // argument is nil, then the SDK's default inflation function will be used. func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, ak types.AccountKeeper, ic types.InflationCalculationFn) AppModule { @@ -144,11 +149,6 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw // ConsensusVersion implements AppModule/ConsensusVersion. func (AppModule) ConsensusVersion() uint64 { return 1 } -// BeginBlock returns the begin blocker for the mint module. -func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) { - BeginBlocker(ctx, am.keeper, am.inflationCalculator) -} - // AppModuleSimulation functions // GenerateGenesisState creates a randomized GenState of the mint module. func (AppModule) GenerateGenesisState(simState *module.SimulationState) { @@ -161,8 +161,8 @@ func (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedP } // RegisterStoreDecoder registers a decoder for mint module's types. -func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { - sdr[types.StoreKey] = simulation.NewDecodeStore(am.cdc) +func (am AppModule) RegisterStoreDecoder(registry simtypes.StoreDecoderRegistry) { + registry[types.StoreKey] = simulation.NewDecodeStore(am.cdc) } // WeightedOperations doesn't return any mint module operation. diff --git a/x/mint/simulation/decoder_test.go b/x/mint/simulation/decoder_test.go index 36a0f4708..98364e52b 100644 --- a/x/mint/simulation/decoder_test.go +++ b/x/mint/simulation/decoder_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/require" - sdk "github.com/cosmos/cosmos-sdk/types" + sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/types/kv" "github.com/cosmos/cosmos-sdk/types/module/testutil" @@ -20,7 +20,7 @@ func TestDecodeStore(t *testing.T) { kvPairs := kv.Pairs{ Pairs: []kv.Pair{ - {Key: composableminttypes.MinterKey, Value: cdc.MustMarshal(&composableminttypes.Minter{Inflation: sdk.NewDec(13), AnnualProvisions: sdk.NewDec(1)})}, + {Key: composableminttypes.MinterKey, Value: cdc.MustMarshal(&composableminttypes.Minter{Inflation: sdkmath.LegacyNewDec(13), AnnualProvisions: sdkmath.LegacyNewDec(1)})}, {Key: []byte{0x99}, Value: []byte{0x99}}, }, } @@ -29,7 +29,7 @@ func TestDecodeStore(t *testing.T) { name string expectedLog string }{ - {"Minter", fmt.Sprintf("%v\n%v", composableminttypes.Minter{Inflation: sdk.NewDec(13), AnnualProvisions: sdk.NewDec(1)}, composableminttypes.Minter{Inflation: sdk.NewDec(13), AnnualProvisions: sdk.NewDec(1)})}, + {"Minter", fmt.Sprintf("%v\n%v", composableminttypes.Minter{Inflation: sdkmath.LegacyNewDec(13), AnnualProvisions: sdkmath.LegacyNewDec(1)}, composableminttypes.Minter{Inflation: sdkmath.LegacyNewDec(13), AnnualProvisions: sdkmath.LegacyNewDec(1)})}, {"other", ""}, } for i, tt := range tests { diff --git a/x/mint/simulation/genesis.go b/x/mint/simulation/genesis.go index f63d39818..98de147b8 100644 --- a/x/mint/simulation/genesis.go +++ b/x/mint/simulation/genesis.go @@ -24,65 +24,65 @@ const ( // GenInflation randomized Inflation func GenInflation(r *rand.Rand) math.LegacyDec { - return sdk.NewDecWithPrec(int64(r.Intn(99)), 2) + return math.LegacyNewDecWithPrec(int64(r.Intn(99)), 2) } // GenInflationRateChange randomized InflationRateChange func GenInflationRateChange(r *rand.Rand) math.LegacyDec { - return sdk.NewDecWithPrec(int64(r.Intn(99)), 2) + return math.LegacyNewDecWithPrec(int64(r.Intn(99)), 2) } // GenInflationMax randomized InflationMax func GenInflationMax(r *rand.Rand) math.LegacyDec { - return sdk.NewDecWithPrec(int64(simtypes.RandIntBetween(r, 10, 30)), 2) + return math.LegacyNewDecWithPrec(int64(simtypes.RandIntBetween(r, 10, 30)), 2) } // GenAnnualProvisions randomized AnnualProvisions func GenAnnualProvisions(r *rand.Rand) math.LegacyDec { - return sdk.NewDecWithPrec(int64(simtypes.RandIntBetween(r, 1, 10)), 2) + return math.LegacyNewDecWithPrec(int64(simtypes.RandIntBetween(r, 1, 10)), 2) } // GenInflationMin randomized InflationMin func GenInflationMin(r *rand.Rand) math.LegacyDec { - return sdk.NewDecWithPrec(int64(simtypes.RandIntBetween(r, 1, 10)), 2) + return math.LegacyNewDecWithPrec(int64(simtypes.RandIntBetween(r, 1, 10)), 2) } // GenGoalBonded randomized GoalBonded func GenGoalBonded(r *rand.Rand) math.LegacyDec { - return sdk.NewDecWithPrec(int64(simtypes.RandIntBetween(r, 50, 100)), 2) + return math.LegacyNewDecWithPrec(int64(simtypes.RandIntBetween(r, 50, 100)), 2) } // RandomizeGenState generates a random GenesisState for wasm func RandomizedGenState(simState *module.SimulationState) { // minter - var inflation sdk.Dec + var inflation math.LegacyDec simState.AppParams.GetOrGenerate( - simState.Cdc, Inflation, &inflation, simState.Rand, + Inflation, &inflation, simState.Rand, func(r *rand.Rand) { inflation = GenInflation(r) }, ) // params - var inflationRateChange sdk.Dec + var inflationRateChange math.LegacyDec simState.AppParams.GetOrGenerate( - simState.Cdc, InflationRateChange, &inflationRateChange, simState.Rand, + InflationRateChange, &inflationRateChange, simState.Rand, func(r *rand.Rand) { inflationRateChange = GenInflationRateChange(r) }, ) - var annualProvisions sdk.Dec + var annualProvisions math.LegacyDec simState.AppParams.GetOrGenerate( - simState.Cdc, AnnualProvisions, &annualProvisions, simState.Rand, + AnnualProvisions, &annualProvisions, simState.Rand, func(r *rand.Rand) { annualProvisions = GenAnnualProvisions(r) }, ) - var goalBonded sdk.Dec + var goalBonded math.LegacyDec simState.AppParams.GetOrGenerate( - simState.Cdc, GoalBonded, &goalBonded, simState.Rand, + GoalBonded, &goalBonded, simState.Rand, func(r *rand.Rand) { goalBonded = GenGoalBonded(r) }, ) - var inflationMax sdk.Dec + var inflationMax math.LegacyDec simState.AppParams.GetOrGenerate( - simState.Cdc, InflationMax, &inflationMax, simState.Rand, + InflationMax, &inflationMax, simState.Rand, func(r *rand.Rand) { inflationMax = GenInflationMax(r) }, ) @@ -98,10 +98,10 @@ func RandomizedGenState(simState *module.SimulationState) { InflationRateChange: inflationRateChange, GoalBonded: goalBonded, BlocksPerYear: blocksPerYear, - MaxTokenPerYear: sdk.NewIntFromUint64(1000000000000000), - MinTokenPerYear: sdk.NewIntFromUint64(800000000000000), + MaxTokenPerYear: math.NewIntFromUint64(1000000000000000), + MinTokenPerYear: math.NewIntFromUint64(800000000000000), }, - IncentivesSupply: sdk.NewCoin(stakingtypes.DefaultParams().BondDenom, sdk.NewInt(100000000000)), + IncentivesSupply: sdk.NewCoin(stakingtypes.DefaultParams().BondDenom, math.NewInt(100000000000)), } _, err := simState.Cdc.MarshalJSON(&mintGenesis) diff --git a/x/mint/simulation/genesis_test.go b/x/mint/simulation/genesis_test.go index 57700280a..ca9200f08 100644 --- a/x/mint/simulation/genesis_test.go +++ b/x/mint/simulation/genesis_test.go @@ -7,8 +7,7 @@ import ( "github.com/stretchr/testify/require" - "cosmossdk.io/math" - sdk "github.com/cosmos/cosmos-sdk/types" + sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/types/module" moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" @@ -32,7 +31,7 @@ func TestRandomizedGenState(t *testing.T) { Rand: r, NumBonded: 3, Accounts: simtypes.RandomAccounts(r, 3), - InitialStake: math.NewInt(1000), + InitialStake: sdkmath.NewInt(1000), GenState: make(map[string]json.RawMessage), } @@ -41,9 +40,9 @@ func TestRandomizedGenState(t *testing.T) { var mintGenesis types.GenesisState simState.Cdc.MustUnmarshalJSON(simState.GenState[types.ModuleName], &mintGenesis) - dec1, _ := sdk.NewDecFromStr("0.940000000000000000") - int1 := sdk.NewIntFromUint64(1000000000000000) - int2 := sdk.NewIntFromUint64(800000000000000) + dec1, _ := sdkmath.LegacyNewDecFromStr("0.940000000000000000") + int1 := sdkmath.NewIntFromUint64(1000000000000000) + int2 := sdkmath.NewIntFromUint64(800000000000000) require.Equal(t, uint64(6311520), mintGenesis.Params.BlocksPerYear) require.Equal(t, dec1, mintGenesis.Params.GoalBonded) @@ -51,7 +50,7 @@ func TestRandomizedGenState(t *testing.T) { require.Equal(t, int2, mintGenesis.Params.MinTokenPerYear) require.Equal(t, "stake", mintGenesis.Params.MintDenom) require.Equal(t, "0stake", mintGenesis.Minter.BlockProvision(mintGenesis.Params).String()) - require.Equal(t, "0.170000000000000000", mintGenesis.Minter.NextAnnualProvisions(mintGenesis.Params, math.OneInt()).String()) + require.Equal(t, "0.170000000000000000", mintGenesis.Minter.NextAnnualProvisions(mintGenesis.Params, sdkmath.OneInt()).String()) // require.Equal(t, "0.169999926644441493", mintGenesis.Minter.NextInflationRate(mintGenesis.Params, math.LegacyOneDec()).String()) require.Equal(t, "0.170000000000000000", mintGenesis.Minter.Inflation.String()) require.Equal(t, "0.070000000000000000", mintGenesis.Minter.AnnualProvisions.String()) diff --git a/x/mint/simulation/proposals.go b/x/mint/simulation/proposals.go index dc28440e5..6f3ab2220 100644 --- a/x/mint/simulation/proposals.go +++ b/x/mint/simulation/proposals.go @@ -3,6 +3,7 @@ package simulation import ( "math/rand" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/address" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" @@ -36,10 +37,10 @@ func SimulateMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) params := types.DefaultParams() params.BlocksPerYear = uint64(simtypes.RandIntBetween(r, 1, 60*60*8766)) - params.GoalBonded = sdk.NewDecWithPrec(int64(simtypes.RandIntBetween(r, 0, 100)), 2) - params.InflationRateChange = sdk.NewDecWithPrec(int64(simtypes.RandIntBetween(r, 1, 20)), 2) - params.MaxTokenPerYear = sdk.NewIntFromUint64(uint64(simtypes.RandIntBetween(r, 1000000000000000, 100000000000000000))) - params.MinTokenPerYear = sdk.NewIntFromUint64(uint64(simtypes.RandIntBetween(r, 1, 1000000000000000))) + params.GoalBonded = sdkmath.LegacyNewDecWithPrec(int64(simtypes.RandIntBetween(r, 0, 100)), 2) + params.InflationRateChange = sdkmath.LegacyNewDecWithPrec(int64(simtypes.RandIntBetween(r, 1, 20)), 2) + params.MaxTokenPerYear = sdkmath.NewIntFromUint64(uint64(simtypes.RandIntBetween(r, 1000000000000000, 100000000000000000))) + params.MinTokenPerYear = sdkmath.NewIntFromUint64(uint64(simtypes.RandIntBetween(r, 1, 1000000000000000))) params.MintDenom = simtypes.RandStringOfLength(r, 10) return &types.MsgUpdateParams{ diff --git a/x/mint/simulation/proposals_test.go b/x/mint/simulation/proposals_test.go index 69aca951a..94107c3cf 100644 --- a/x/mint/simulation/proposals_test.go +++ b/x/mint/simulation/proposals_test.go @@ -7,6 +7,7 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "gotest.tools/v3/assert" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/address" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" @@ -39,9 +40,9 @@ func TestProposalMsgs(t *testing.T) { assert.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Authority) assert.Equal(t, uint64(20546551), msgUpdateParams.Params.BlocksPerYear) - assert.DeepEqual(t, sdk.NewDecWithPrec(56, 2), msgUpdateParams.Params.GoalBonded) - assert.DeepEqual(t, sdk.NewDecWithPrec(1, 2), msgUpdateParams.Params.InflationRateChange) - assert.DeepEqual(t, sdk.NewInt(99997750760398084), msgUpdateParams.Params.MaxTokenPerYear) - assert.DeepEqual(t, sdk.NewInt(504064263676792), msgUpdateParams.Params.MinTokenPerYear) + assert.DeepEqual(t, sdkmath.LegacyNewDecWithPrec(56, 2), msgUpdateParams.Params.GoalBonded) + assert.DeepEqual(t, sdkmath.LegacyNewDecWithPrec(1, 2), msgUpdateParams.Params.InflationRateChange) + assert.DeepEqual(t, sdkmath.NewInt(99997750760398084), msgUpdateParams.Params.MaxTokenPerYear) + assert.DeepEqual(t, sdkmath.NewInt(504064263676792), msgUpdateParams.Params.MinTokenPerYear) assert.Equal(t, "XhhuTSkuxK", msgUpdateParams.Params.MintDenom) } diff --git a/x/mint/types/codec.go b/x/mint/types/codec.go index 5032b1376..14e981f7c 100644 --- a/x/mint/types/codec.go +++ b/x/mint/types/codec.go @@ -7,8 +7,6 @@ import ( cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/msgservice" - authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec" - govcodec "github.com/cosmos/cosmos-sdk/x/gov/codec" ) var ( @@ -20,8 +18,8 @@ func init() { RegisterLegacyAminoCodec(amino) cryptocodec.RegisterCrypto(amino) - RegisterLegacyAminoCodec(authzcodec.Amino) - RegisterLegacyAminoCodec(govcodec.Amino) + // RegisterLegacyAminoCodec(authzcodec.Amino) + // RegisterLegacyAminoCodec(govcodec.Amino) amino.Seal() } diff --git a/x/mint/types/expected_keepers.go b/x/mint/types/expected_keepers.go index bba9291a6..753115c01 100644 --- a/x/mint/types/expected_keepers.go +++ b/x/mint/types/expected_keepers.go @@ -1,15 +1,16 @@ package types // noalias import ( + context "context" + "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/auth/types" ) // StakingKeeper defines the expected staking keeper type StakingKeeper interface { - StakingTokenSupply(ctx sdk.Context) math.Int - BondedRatio(ctx sdk.Context) sdk.Dec + StakingTokenSupply(ctx context.Context) (math.Int, error) + BondedRatio(ctx context.Context) (math.LegacyDec, error) } // AccountKeeper defines the contract required for account APIs. @@ -17,17 +18,17 @@ type AccountKeeper interface { GetModuleAddress(name string) sdk.AccAddress // TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862 - SetModuleAccount(sdk.Context, types.ModuleAccountI) - GetModuleAccount(ctx sdk.Context, moduleName string) types.ModuleAccountI + SetModuleAccount(context.Context, sdk.ModuleAccountI) + GetModuleAccount(ctx context.Context, moduleName string) sdk.ModuleAccountI } // BankKeeper defines the contract needed to be fulfilled for banking and supply // dependencies. type BankKeeper interface { - SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx sdk.Context, sender sdk.AccAddress, moduleName string, amt sdk.Coins) error - SendCoinsFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, amt sdk.Coins) error - MintCoins(ctx sdk.Context, name string, amt sdk.Coins) error - GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin - SendCoins(ctx sdk.Context, fromAddr, toAddr sdk.AccAddress, amt sdk.Coins) error + SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error + SendCoinsFromAccountToModule(ctx context.Context, sender sdk.AccAddress, moduleName string, amt sdk.Coins) error + SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error + MintCoins(ctx context.Context, name string, amt sdk.Coins) error + GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin + SendCoins(ctx context.Context, fromAddr, toAddr sdk.AccAddress, amt sdk.Coins) error } diff --git a/x/mint/types/genesis.go b/x/mint/types/genesis.go index ea420ef57..6c21fd158 100644 --- a/x/mint/types/genesis.go +++ b/x/mint/types/genesis.go @@ -11,10 +11,10 @@ import ( // bondedRatio and returns the newly calculated inflation rate. // It can be used to specify a custom inflation calculation logic, instead of relying on the // default logic provided by the sdk. -type InflationCalculationFn func(ctx sdk.Context, minter Minter, params Params, bondedRatio sdk.Dec, totalStakingSupply math.Int) sdk.Dec +type InflationCalculationFn func(ctx sdk.Context, minter Minter, params Params, bondedRatio math.LegacyDec, totalStakingSupply math.Int) math.LegacyDec // DefaultInflationCalculationFn is the default function used to calculate inflation. -func DefaultInflationCalculationFn(_ sdk.Context, minter Minter, params Params, bondedRatio sdk.Dec, totalStakingSupply math.Int) sdk.Dec { +func DefaultInflationCalculationFn(_ sdk.Context, minter Minter, params Params, bondedRatio math.LegacyDec, totalStakingSupply math.Int) math.LegacyDec { return minter.NextInflationRate(params, bondedRatio, totalStakingSupply) } @@ -32,7 +32,7 @@ func DefaultGenesisState() *GenesisState { return &GenesisState{ Minter: DefaultInitialMinter(), Params: DefaultParams(), - IncentivesSupply: sdk.NewCoin(stakingtypes.DefaultParams().BondDenom, sdk.NewInt(IncentivesSupply)), + IncentivesSupply: sdk.NewCoin(stakingtypes.DefaultParams().BondDenom, math.NewInt(IncentivesSupply)), } } diff --git a/x/mint/types/mint.pb.go b/x/mint/types/mint.pb.go index cebfddc2f..e2a93a399 100644 --- a/x/mint/types/mint.pb.go +++ b/x/mint/types/mint.pb.go @@ -4,9 +4,9 @@ package types import ( + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" _ "github.com/cosmos/cosmos-proto" - github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" io "io" @@ -28,9 +28,9 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // Minter represents the minting state. type Minter struct { // current annual inflation rate - Inflation github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,1,opt,name=inflation,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"inflation"` + Inflation cosmossdk_io_math.LegacyDec `protobuf:"bytes,1,opt,name=inflation,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"inflation"` // current annual expected provisions - AnnualProvisions github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,2,opt,name=annual_provisions,json=annualProvisions,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"annual_provisions"` + AnnualProvisions cosmossdk_io_math.LegacyDec `protobuf:"bytes,2,opt,name=annual_provisions,json=annualProvisions,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"annual_provisions"` } func (m *Minter) Reset() { *m = Minter{} } @@ -71,15 +71,15 @@ type Params struct { // type of coin to mint MintDenom string `protobuf:"bytes,1,opt,name=mint_denom,json=mintDenom,proto3" json:"mint_denom,omitempty"` // maximum annual change in inflation rate - InflationRateChange github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,2,opt,name=inflation_rate_change,json=inflationRateChange,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"inflation_rate_change"` + InflationRateChange cosmossdk_io_math.LegacyDec `protobuf:"bytes,2,opt,name=inflation_rate_change,json=inflationRateChange,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"inflation_rate_change"` // goal of percent bonded atoms - GoalBonded github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,opt,name=goal_bonded,json=goalBonded,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"goal_bonded"` + GoalBonded cosmossdk_io_math.LegacyDec `protobuf:"bytes,3,opt,name=goal_bonded,json=goalBonded,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"goal_bonded"` // expected blocks per year BlocksPerYear uint64 `protobuf:"varint,4,opt,name=blocks_per_year,json=blocksPerYear,proto3" json:"blocks_per_year,omitempty"` // expected max amount of token to be distribute per year - MaxTokenPerYear github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,6,opt,name=max_token_per_year,json=maxTokenPerYear,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"max_token_per_year"` + MaxTokenPerYear cosmossdk_io_math.Int `protobuf:"bytes,6,opt,name=max_token_per_year,json=maxTokenPerYear,proto3,customtype=cosmossdk.io/math.Int" json:"max_token_per_year"` // expected mint amount of token to be distribute per year - MinTokenPerYear github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,7,opt,name=min_token_per_year,json=minTokenPerYear,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"min_token_per_year"` + MinTokenPerYear cosmossdk_io_math.Int `protobuf:"bytes,7,opt,name=min_token_per_year,json=minTokenPerYear,proto3,customtype=cosmossdk.io/math.Int" json:"min_token_per_year"` } func (m *Params) Reset() { *m = Params{} } @@ -139,32 +139,32 @@ func init() { var fileDescriptor_eddbd7b6ac49f431 = []byte{ // 419 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x93, 0x41, 0x8b, 0xd3, 0x40, - 0x18, 0x86, 0x13, 0xb7, 0x54, 0x3a, 0x2a, 0xd5, 0x51, 0xb1, 0x2e, 0x98, 0x2e, 0x3d, 0x94, 0xbd, - 0x6c, 0xc2, 0xe2, 0x4d, 0x3c, 0xd5, 0x5e, 0xf6, 0x20, 0x94, 0xe0, 0xc5, 0x05, 0x19, 0x26, 0xc9, - 0x67, 0x76, 0x68, 0x66, 0xbe, 0x30, 0x33, 0xbb, 0x74, 0xff, 0x85, 0x47, 0x8f, 0xfe, 0x08, 0x7f, - 0xc4, 0xde, 0x5c, 0x3c, 0x89, 0x87, 0x22, 0xed, 0xdf, 0xf0, 0x20, 0x93, 0x09, 0x6d, 0xf1, 0x26, - 0xf6, 0x94, 0xcc, 0xfb, 0xbd, 0x79, 0xde, 0xf7, 0x0b, 0x09, 0x19, 0xe5, 0x28, 0x6b, 0x34, 0x3c, - 0xab, 0x20, 0x91, 0x42, 0xd9, 0xe4, 0xea, 0x34, 0x03, 0xcb, 0x4f, 0x9b, 0x43, 0x5c, 0x6b, 0xb4, - 0x48, 0x9f, 0x6d, 0x3d, 0x71, 0x23, 0xb7, 0x9e, 0xc3, 0x27, 0x25, 0x96, 0xd8, 0x78, 0x12, 0x77, - 0xe7, 0xed, 0x87, 0xcf, 0x73, 0x34, 0x12, 0x0d, 0xf3, 0x03, 0x7f, 0xf0, 0xa3, 0xd1, 0xb7, 0x90, - 0x74, 0xdf, 0x0a, 0x65, 0x41, 0xd3, 0x73, 0xd2, 0x13, 0xea, 0x63, 0xc5, 0xad, 0x40, 0x35, 0x08, - 0x8f, 0xc2, 0xe3, 0xde, 0xe4, 0xf5, 0xcd, 0x72, 0x18, 0xfc, 0x5c, 0x0e, 0xc7, 0xa5, 0xb0, 0x17, - 0x97, 0x59, 0x9c, 0xa3, 0x6c, 0x1f, 0x6f, 0x2f, 0x27, 0xa6, 0x98, 0x27, 0xf6, 0xba, 0x06, 0x13, - 0x4f, 0x21, 0xff, 0xfe, 0xf5, 0x84, 0xb4, 0xf4, 0x29, 0xe4, 0xe9, 0x16, 0x47, 0x05, 0x79, 0xc4, - 0x95, 0xba, 0xe4, 0x95, 0xeb, 0x70, 0x25, 0x8c, 0x40, 0x65, 0x06, 0x77, 0xf6, 0x90, 0xf1, 0xd0, - 0x63, 0x67, 0x1b, 0xea, 0xe8, 0xf7, 0x01, 0xe9, 0xce, 0xb8, 0xe6, 0xd2, 0xd0, 0x17, 0x84, 0xb8, - 0xb7, 0xc3, 0x0a, 0x50, 0x28, 0xfd, 0x4a, 0x69, 0xcf, 0x29, 0x53, 0x27, 0xd0, 0x9a, 0x3c, 0xdd, - 0x34, 0x64, 0x9a, 0x5b, 0x60, 0xf9, 0x05, 0x57, 0x25, 0xec, 0xa5, 0xd8, 0xe3, 0x0d, 0x3a, 0xe5, - 0x16, 0xde, 0x34, 0x60, 0xfa, 0x81, 0xdc, 0x2b, 0x91, 0x57, 0x2c, 0x43, 0x55, 0x40, 0x31, 0x38, - 0xd8, 0x43, 0x0e, 0x71, 0xc0, 0x49, 0xc3, 0xa3, 0x63, 0xd2, 0xcf, 0x2a, 0xcc, 0xe7, 0x86, 0xd5, - 0xa0, 0xd9, 0x35, 0x70, 0x3d, 0xe8, 0x1c, 0x85, 0xc7, 0x9d, 0xf4, 0x81, 0x97, 0x67, 0xa0, 0xdf, - 0x03, 0xd7, 0x54, 0x10, 0x2a, 0xf9, 0x82, 0x59, 0x9c, 0x83, 0xda, 0x5a, 0xbb, 0xff, 0xdc, 0xe6, - 0x4c, 0xd9, 0x9d, 0x36, 0x67, 0xca, 0xa6, 0x7d, 0xc9, 0x17, 0xef, 0x1c, 0x76, 0x37, 0x4a, 0xa8, - 0xbf, 0xa3, 0xee, 0xfe, 0x67, 0x94, 0x5b, 0xbc, 0x2f, 0x85, 0xda, 0x8d, 0x7a, 0xd5, 0xf9, 0xfc, - 0x65, 0x18, 0x4c, 0xc6, 0x37, 0xab, 0x28, 0xbc, 0x5d, 0x45, 0xe1, 0xaf, 0x55, 0x14, 0x7e, 0x5a, - 0x47, 0xc1, 0xed, 0x3a, 0x0a, 0x7e, 0xac, 0xa3, 0xe0, 0xfc, 0xfe, 0xc2, 0xff, 0x4f, 0x0d, 0x30, - 0xeb, 0x36, 0xdf, 0xff, 0xcb, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe9, 0x16, 0x9b, 0x29, 0x6f, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0x41, 0x8b, 0x13, 0x31, + 0x14, 0xc7, 0x67, 0xdc, 0x52, 0x69, 0x54, 0xaa, 0xd1, 0xc5, 0xba, 0xe2, 0x74, 0xe9, 0x61, 0x59, + 0x10, 0x5b, 0x8a, 0x37, 0x8f, 0xb5, 0x97, 0x05, 0xc5, 0x32, 0x78, 0x50, 0x0f, 0x86, 0x37, 0xd3, + 0xe7, 0x6c, 0xe8, 0x24, 0xaf, 0x24, 0x71, 0x69, 0xbf, 0x85, 0x47, 0x8f, 0x7e, 0x08, 0x2f, 0xde, + 0x3d, 0xec, 0x71, 0xf1, 0x24, 0x1e, 0x8a, 0xb4, 0x5f, 0x44, 0x32, 0x29, 0x6d, 0xd1, 0x93, 0xbd, + 0xe5, 0xfd, 0xdf, 0x3f, 0xbf, 0xf7, 0x4f, 0x48, 0x58, 0x27, 0x27, 0x35, 0x25, 0x0b, 0x59, 0x89, + 0x3d, 0x25, 0xb5, 0xeb, 0x5d, 0xf4, 0x33, 0x74, 0xd0, 0xaf, 0x8a, 0xee, 0xd4, 0x90, 0x23, 0x7e, + 0x7f, 0xeb, 0xe9, 0x56, 0xf2, 0xda, 0x73, 0x74, 0xaf, 0xa0, 0x82, 0x2a, 0x4f, 0xcf, 0xaf, 0x82, + 0xfd, 0xe8, 0x41, 0x4e, 0x56, 0x91, 0x15, 0xa1, 0x11, 0x8a, 0xd0, 0xea, 0x7c, 0x8b, 0x59, 0xfd, + 0xa5, 0xd4, 0x0e, 0x0d, 0x7f, 0xc5, 0x1a, 0x52, 0x7f, 0x28, 0xc1, 0x49, 0xd2, 0xad, 0xf8, 0x38, + 0x3e, 0x6d, 0x0c, 0xfa, 0x97, 0x8b, 0x76, 0xf4, 0x6b, 0xd1, 0x7e, 0x18, 0xf6, 0xd8, 0xf1, 0xa4, + 0x2b, 0xa9, 0xa7, 0xc0, 0x9d, 0x77, 0x5f, 0x60, 0x01, 0xf9, 0x7c, 0x88, 0xf9, 0x8f, 0xaf, 0x4f, + 0xd8, 0x1a, 0x39, 0xc4, 0x3c, 0xdd, 0x32, 0xf8, 0x7b, 0x76, 0x07, 0xb4, 0xfe, 0x08, 0xa5, 0x1f, + 0x7c, 0x21, 0xad, 0x24, 0x6d, 0x5b, 0xd7, 0xf6, 0x05, 0xdf, 0x0e, 0xac, 0xd1, 0x06, 0xd5, 0xf9, + 0x7e, 0xc0, 0xea, 0x23, 0x30, 0xa0, 0x2c, 0x7f, 0xc4, 0x98, 0xbf, 0x07, 0x31, 0x46, 0x4d, 0x2a, + 0x84, 0x4f, 0x1b, 0x5e, 0x19, 0x7a, 0x81, 0x23, 0x3b, 0xdc, 0xc4, 0x12, 0x06, 0x1c, 0x8a, 0xfc, + 0x1c, 0x74, 0x81, 0xfb, 0xa7, 0xb9, 0xbb, 0xe1, 0xa5, 0xe0, 0xf0, 0x79, 0x45, 0xe3, 0x29, 0xbb, + 0x51, 0x10, 0x94, 0x22, 0x23, 0x3d, 0xc6, 0x71, 0xeb, 0x60, 0x5f, 0x38, 0xf3, 0x94, 0x41, 0x05, + 0xe1, 0x27, 0xac, 0x99, 0x95, 0x94, 0x4f, 0xac, 0x98, 0xa2, 0x11, 0x73, 0x04, 0xd3, 0xaa, 0x1d, + 0xc7, 0xa7, 0xb5, 0xf4, 0x56, 0x90, 0x47, 0x68, 0xde, 0x22, 0x18, 0xfe, 0x86, 0x71, 0x05, 0x33, + 0xe1, 0x68, 0x82, 0x7a, 0x6b, 0xad, 0x57, 0x11, 0x1e, 0xaf, 0x23, 0x1c, 0xfe, 0x1b, 0xe1, 0x4c, + 0xbb, 0x9d, 0xe1, 0x67, 0xda, 0xa5, 0x4d, 0x05, 0xb3, 0xd7, 0x9e, 0xb2, 0x4b, 0x96, 0xfa, 0x6f, + 0xf2, 0xf5, 0xff, 0x23, 0xfb, 0x63, 0x35, 0x95, 0xd4, 0xbb, 0xe4, 0x67, 0xb5, 0xcf, 0x5f, 0xda, + 0xd1, 0xe0, 0xe4, 0x72, 0x99, 0xc4, 0x57, 0xcb, 0x24, 0xfe, 0xbd, 0x4c, 0xe2, 0x4f, 0xab, 0x24, + 0xba, 0x5a, 0x25, 0xd1, 0xcf, 0x55, 0x12, 0xbd, 0xbb, 0x39, 0x0b, 0x3f, 0xc0, 0xcd, 0xa7, 0x68, + 0xb3, 0x7a, 0xf5, 0x62, 0x9f, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0xdb, 0x86, 0x4d, 0x2c, 0x21, 0x03, 0x00, 0x00, } diff --git a/x/mint/types/minter.go b/x/mint/types/minter.go index 10b38f5d3..5bcbf3ffb 100644 --- a/x/mint/types/minter.go +++ b/x/mint/types/minter.go @@ -9,7 +9,7 @@ import ( // NewMinter returns a new Minter object with the given inflation and annual // provisions values. -func NewMinter(inflation, annualProvisions sdk.Dec) Minter { +func NewMinter(inflation, annualProvisions math.LegacyDec) Minter { return Minter{ Inflation: inflation, AnnualProvisions: annualProvisions, @@ -17,10 +17,10 @@ func NewMinter(inflation, annualProvisions sdk.Dec) Minter { } // InitialMinter returns an initial Minter object with a given inflation value. -func InitialMinter(inflation sdk.Dec) Minter { +func InitialMinter(inflation math.LegacyDec) Minter { return NewMinter( inflation, - sdk.NewDec(0), + math.LegacyNewDec(0), ) } @@ -30,7 +30,7 @@ func DefaultInitialMinter() Minter { return InitialMinter( // Create a new Dec from integer with decimal place at prec // CONTRACT: prec <= Precision - sdk.NewDecWithPrec(InflationRate, Precision), + math.LegacyNewDecWithPrec(InflationRate, Precision), ) } @@ -44,8 +44,8 @@ func ValidateMinter(minter Minter) error { } // NextInflationRate returns the new inflation rate for the next hour. -func (m Minter) NextInflationRate(params Params, bondedRatio sdk.Dec, totalStakingSupply math.Int) sdk.Dec { - totalStakingSupplyDec := sdk.NewDecFromInt(totalStakingSupply) +func (m Minter) NextInflationRate(params Params, bondedRatio math.LegacyDec, totalStakingSupply math.Int) math.LegacyDec { + totalStakingSupplyDec := math.LegacyNewDecFromInt(totalStakingSupply) if totalStakingSupplyDec.LT(math.LegacySmallestDec()) { return m.Inflation // assert if totalStakingSupplyDec = 0 } @@ -57,16 +57,16 @@ func (m Minter) NextInflationRate(params Params, bondedRatio sdk.Dec, totalStaki // 7% and 20%. // (1 - bondedRatio/GoalBonded) * InflationRateChange - inflationRateChangePerYear := sdk.OneDec(). + inflationRateChangePerYear := math.LegacyOneDec(). Sub(bondedRatio.Quo(params.GoalBonded)). Mul(params.InflationRateChange) - inflationRateChange := inflationRateChangePerYear.Quo(sdk.NewDec(int64(params.BlocksPerYear))) + inflationRateChange := inflationRateChangePerYear.Quo(math.LegacyNewDec(int64(params.BlocksPerYear))) // adjust the new annual inflation for this next cycle inflation := m.Inflation.Add(inflationRateChange) // note inflationRateChange may be negative - inflationMax := sdk.NewDecFromInt(params.MaxTokenPerYear).Quo(totalStakingSupplyDec) - inflationMin := sdk.NewDecFromInt(params.MinTokenPerYear).Quo(totalStakingSupplyDec) + inflationMax := math.LegacyNewDecFromInt(params.MaxTokenPerYear).Quo(totalStakingSupplyDec) + inflationMin := math.LegacyNewDecFromInt(params.MinTokenPerYear).Quo(totalStakingSupplyDec) if inflation.GT(inflationMax) { inflation = inflationMax @@ -80,13 +80,13 @@ func (m Minter) NextInflationRate(params Params, bondedRatio sdk.Dec, totalStaki // NextAnnualProvisions returns the annual provisions based on current total // supply and inflation rate. -func (m Minter) NextAnnualProvisions(_ Params, totalSupply math.Int) sdk.Dec { +func (m Minter) NextAnnualProvisions(_ Params, totalSupply math.Int) math.LegacyDec { return m.Inflation.MulInt(totalSupply) } // BlockProvision returns the provisions for a block based on the annual // provisions rate. func (m Minter) BlockProvision(params Params) sdk.Coin { - provisionAmt := m.AnnualProvisions.QuoInt(sdk.NewInt(int64(params.BlocksPerYear))) + provisionAmt := m.AnnualProvisions.QuoInt(math.NewInt(int64(params.BlocksPerYear))) return sdk.NewCoin(params.MintDenom, provisionAmt.TruncateInt()) } diff --git a/x/mint/types/minter_test.go b/x/mint/types/minter_test.go index 6289e0875..21e323305 100644 --- a/x/mint/types/minter_test.go +++ b/x/mint/types/minter_test.go @@ -4,6 +4,7 @@ import ( "math/rand" "testing" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" ) @@ -11,7 +12,7 @@ import ( // func TestNextInflation(t *testing.T) { // minter := DefaultInitialMinter() // params := DefaultParams() -// blocksPerYr := sdk.NewDec(int64(params.BlocksPerYear)) +// blocksPerYr := sdkmath.LegacyNewDec(int64(params.BlocksPerYear)) // // Governing Mechanism: // // inflationRateChangePerYear = (1- BondedRatio/ GoalBonded) * MaxInflationRateChange @@ -20,31 +21,31 @@ import ( // bondedRatio, setInflation, expChange sdk.Dec // }{ // // with 0% bonded atom supply the inflation should increase by InflationRateChange -// {sdk.ZeroDec(), sdk.NewDecWithPrec(7, 2), params.InflationRateChange.Quo(blocksPerYr)}, +// {sdk.ZeroDec(), sdkmath.LegacyNewDecWithPrec(7, 2), params.InflationRateChange.Quo(blocksPerYr)}, // // 100% bonded, starting at 20% inflation and being reduced // // (1 - (1/0.67))*(0.13/8667) // { -// sdk.OneDec(), sdk.NewDecWithPrec(20, 2), +// sdk.OneDec(), sdkmath.LegacyNewDecWithPrec(20, 2), // sdk.OneDec().Sub(sdk.OneDec().Quo(params.GoalBonded)).Mul(params.InflationRateChange).Quo(blocksPerYr), // }, // // 50% bonded, starting at 10% inflation and being increased // { -// sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(10, 2), -// sdk.OneDec().Sub(sdk.NewDecWithPrec(5, 1).Quo(params.GoalBonded)).Mul(params.InflationRateChange).Quo(blocksPerYr), +// sdkmath.LegacyNewDecWithPrec(5, 1), sdkmath.LegacyNewDecWithPrec(10, 2), +// sdk.OneDec().Sub(sdkmath.LegacyNewDecWithPrec(5, 1).Quo(params.GoalBonded)).Mul(params.InflationRateChange).Quo(blocksPerYr), // }, // // test 7% minimum stop (testing with 100% bonded) -// {sdk.OneDec(), sdk.NewDecWithPrec(7, 2), sdk.ZeroDec()}, -// {sdk.OneDec(), sdk.NewDecWithPrec(700000001, 10), sdk.NewDecWithPrec(-1, 10)}, +// {sdk.OneDec(), sdkmath.LegacyNewDecWithPrec(7, 2), sdk.ZeroDec()}, +// {sdk.OneDec(), sdkmath.LegacyNewDecWithPrec(700000001, 10), sdkmath.LegacyNewDecWithPrec(-1, 10)}, // // test 20% maximum stop (testing with 0% bonded) -// {sdk.ZeroDec(), sdk.NewDecWithPrec(20, 2), sdk.ZeroDec()}, -// {sdk.ZeroDec(), sdk.NewDecWithPrec(1999999999, 10), sdk.NewDecWithPrec(1, 10)}, +// {sdk.ZeroDec(), sdkmath.LegacyNewDecWithPrec(20, 2), sdk.ZeroDec()}, +// {sdk.ZeroDec(), sdkmath.LegacyNewDecWithPrec(1999999999, 10), sdkmath.LegacyNewDecWithPrec(1, 10)}, // // perfect balance shouldn't change inflation -// {sdk.NewDecWithPrec(67, 2), sdk.NewDecWithPrec(15, 2), sdk.ZeroDec()}, +// {sdkmath.LegacyNewDecWithPrec(67, 2), sdkmath.LegacyNewDecWithPrec(15, 2), sdk.ZeroDec()}, // } // for i, tc := range tests { // minter.Inflation = tc.setInflation @@ -58,7 +59,7 @@ import ( // } // func TestBlockProvision(t *testing.T) { -// minter := InitialMinter(sdk.NewDecWithPrec(1, 1)) +// minter := InitialMinter(sdkmath.LegacyNewDecWithPrec(1, 1)) // params := DefaultParams() // secondsPerYear := int64(60 * 60 * 8766) @@ -73,11 +74,11 @@ import ( // {(secondsPerYear / 5) / 2, 0}, // } // for i, tc := range tests { -// minter.AnnualProvisions = sdk.NewDec(tc.annualProvisions) +// minter.AnnualProvisions = sdkmath.LegacyNewDec(tc.annualProvisions) // provisions := minter.BlockProvision(params) // expProvisions := sdk.NewCoin(params.MintDenom, -// sdk.NewInt(tc.expProvisions)) +// sdkmath.NewInt(tc.expProvisions)) // require.True(t, expProvisions.IsEqual(provisions), // "test: %v\n\tExp: %v\n\tGot: %v\n", @@ -93,12 +94,12 @@ import ( // // BenchmarkBlockProvision-4 3000000 429 ns/op // func BenchmarkBlockProvision(b *testing.B) { // b.ReportAllocs() -// minter := InitialMinter(sdk.NewDecWithPrec(1, 1)) +// minter := InitialMinter(sdkmath.LegacyNewDecWithPrec(1, 1)) // params := DefaultParams() // s1 := rand.NewSource(100) // r1 := rand.New(s1) -// minter.AnnualProvisions = sdk.NewDec(r1.Int63n(1000000)) +// minter.AnnualProvisions = sdkmath.LegacyNewDec(r1.Int63n(1000000)) // // run the BlockProvision function b.N times // for n := 0; n < b.N; n++ { @@ -110,9 +111,9 @@ import ( // // BenchmarkNextInflation-4 1000000 1828 ns/op // func BenchmarkNextInflation(b *testing.B) { // b.ReportAllocs() -// minter := InitialMinter(sdk.NewDecWithPrec(1, 1)) +// minter := InitialMinter(sdkmath.LegacyNewDecWithPrec(1, 1)) // params := DefaultParams() -// bondedRatio := sdk.NewDecWithPrec(1, 1) +// bondedRatio := sdkmath.LegacyNewDecWithPrec(1, 1) // // run the NextInflationRate function b.N times // for n := 0; n < b.N; n++ { @@ -124,9 +125,9 @@ import ( // // BenchmarkNextAnnualProvisions-4 5000000 251 ns/op // func BenchmarkNextAnnualProvisions(b *testing.B) { // b.ReportAllocs() -// minter := InitialMinter(sdk.NewDecWithPrec(1, 1)) +// minter := InitialMinter(sdkmath.LegacyNewDecWithPrec(1, 1)) // params := DefaultParams() -// totalSupply := sdk.NewInt(100000000000000) +// totalSupply := sdkmath.NewInt(100000000000000) // // run the NextAnnualProvisions function b.N times // for n := 0; n < b.N; n++ { @@ -137,18 +138,18 @@ import ( func TestSimulateMint(t *testing.T) { minter := DefaultInitialMinter() params := DefaultParams() - totalSupply := sdk.NewInt(1_000_000_000_000_000_000) - totalStaked := sdk.NewInt(0) - tokenMinted := sdk.NewCoin("stake", sdk.NewInt(0)) + totalSupply := sdkmath.NewInt(1_000_000_000_000_000_000) + totalStaked := sdkmath.NewInt(0) + tokenMinted := sdk.NewCoin("stake", sdkmath.NewInt(0)) for i := 1; i <= int(params.BlocksPerYear); i++ { - stakingDiff := sdk.NewDec(int64(rand.Intn(10))).QuoInt(sdk.NewInt(1_000_000)).MulInt(totalSupply) + stakingDiff := sdkmath.LegacyNewDec(int64(rand.Intn(10))).QuoInt(sdkmath.NewInt(1_000_000)).MulInt(totalSupply) if (rand.Float32() > 0.5 || totalStaked.Add(stakingDiff.RoundInt()).GT(totalSupply)) && !totalStaked.Sub(stakingDiff.RoundInt()).IsNegative() { stakingDiff = stakingDiff.Neg() } totalStaked = totalStaked.Add(stakingDiff.RoundInt()) - bondedRatio := sdk.NewDecFromInt(totalStaked).Quo(sdk.NewDecFromInt(totalSupply)) + bondedRatio := sdkmath.LegacyNewDecFromInt(totalStaked).Quo(sdkmath.LegacyNewDecFromInt(totalSupply)) minter.Inflation = minter.NextInflationRate(params, bondedRatio, totalStaked) minter.AnnualProvisions = minter.NextAnnualProvisions(params, totalStaked) diff --git a/x/mint/types/params.go b/x/mint/types/params.go index c56ade10f..21a86a073 100644 --- a/x/mint/types/params.go +++ b/x/mint/types/params.go @@ -39,7 +39,7 @@ func ParamKeyTable() paramtypes.KeyTable { } func NewParams( - mintDenom string, inflationRateChange, _, _, goalBonded sdk.Dec, blocksPerYear uint64, tokenPerYear math.Int, + mintDenom string, inflationRateChange, _, _, goalBonded math.LegacyDec, blocksPerYear uint64, tokenPerYear math.Int, ) Params { return Params{ MintDenom: mintDenom, @@ -55,11 +55,11 @@ func NewParams( func DefaultParams() Params { return Params{ MintDenom: sdk.DefaultBondDenom, - InflationRateChange: sdk.NewDecWithPrec(InflationRate, Precision), - GoalBonded: sdk.NewDecWithPrec(DesiredRatio, Precision), + InflationRateChange: math.LegacyNewDecWithPrec(InflationRate, Precision), + GoalBonded: math.LegacyNewDecWithPrec(DesiredRatio, Precision), BlocksPerYear: uint64(60 * 60 * 8766 / BlockTime), - MaxTokenPerYear: sdk.NewIntFromUint64(MaxTokenPerYear), - MinTokenPerYear: sdk.NewIntFromUint64(MinTokenPerYear), + MaxTokenPerYear: math.NewIntFromUint64(MaxTokenPerYear), + MinTokenPerYear: math.NewIntFromUint64(MinTokenPerYear), } } @@ -122,7 +122,7 @@ func validateMintDenom(i interface{}) error { } func validateInflationRateChange(i interface{}) error { - v, ok := i.(sdk.Dec) + v, ok := i.(math.LegacyDec) if !ok { return fmt.Errorf("invalid parameter type: %T", i) } @@ -130,7 +130,7 @@ func validateInflationRateChange(i interface{}) error { if v.IsNegative() { return fmt.Errorf("inflation rate change cannot be negative: %s", v) } - if v.GT(sdk.OneDec()) { + if v.GT(math.LegacyOneDec()) { return fmt.Errorf("inflation rate change too large: %s", v) } @@ -170,7 +170,7 @@ func validateInflationRateChange(i interface{}) error { // } func validateGoalBonded(i interface{}) error { - v, ok := i.(sdk.Dec) + v, ok := i.(math.LegacyDec) if !ok { return fmt.Errorf("invalid parameter type: %T", i) } @@ -178,7 +178,7 @@ func validateGoalBonded(i interface{}) error { if v.IsNegative() || v.IsZero() { return fmt.Errorf("goal bonded must be positive: %s", v) } - if v.GT(sdk.OneDec()) { + if v.GT(math.LegacyOneDec()) { return fmt.Errorf("goal bonded too large: %s", v) } diff --git a/x/mint/types/query.pb.go b/x/mint/types/query.pb.go index f263fd872..c79c596fa 100644 --- a/x/mint/types/query.pb.go +++ b/x/mint/types/query.pb.go @@ -5,8 +5,8 @@ package types import ( context "context" + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" - github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" @@ -154,7 +154,7 @@ var xxx_messageInfo_QueryInflationRequest proto.InternalMessageInfo // method. type QueryInflationResponse struct { // inflation is the current minting inflation value. - Inflation github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,1,opt,name=inflation,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"inflation"` + Inflation cosmossdk_io_math.LegacyDec `protobuf:"bytes,1,opt,name=inflation,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"inflation"` } func (m *QueryInflationResponse) Reset() { *m = QueryInflationResponse{} } @@ -232,7 +232,7 @@ var xxx_messageInfo_QueryAnnualProvisionsRequest proto.InternalMessageInfo // Query/AnnualProvisions RPC method. type QueryAnnualProvisionsResponse struct { // annual_provisions is the current minting annual provisions value. - AnnualProvisions github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,1,opt,name=annual_provisions,json=annualProvisions,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"annual_provisions"` + AnnualProvisions cosmossdk_io_math.LegacyDec `protobuf:"bytes,1,opt,name=annual_provisions,json=annualProvisions,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"annual_provisions"` } func (m *QueryAnnualProvisionsResponse) Reset() { *m = QueryAnnualProvisionsResponse{} } @@ -282,36 +282,35 @@ func init() { } var fileDescriptor_2530c578222e85a6 = []byte{ - // 451 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4e, 0xce, 0xcf, 0x2d, - 0xc8, 0x2f, 0x4e, 0x4c, 0xca, 0x49, 0xd5, 0xcf, 0xcd, 0xcc, 0x2b, 0xd1, 0x2f, 0x33, 0x4c, 0x4a, - 0x2d, 0x49, 0x34, 0xd4, 0x2f, 0x2c, 0x4d, 0x2d, 0xaa, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, - 0x12, 0x47, 0x28, 0xd2, 0x03, 0x29, 0xd2, 0x83, 0x2a, 0x92, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, - 0xab, 0xd1, 0x07, 0xb1, 0x20, 0xca, 0xa5, 0x64, 0xd2, 0xf3, 0xf3, 0xd3, 0x73, 0x52, 0xf5, 0x13, - 0x0b, 0x32, 0xf5, 0x13, 0xf3, 0xf2, 0xf2, 0x4b, 0x12, 0x4b, 0x32, 0xf3, 0xf3, 0x8a, 0xa1, 0xb2, - 0x4a, 0xb8, 0x6c, 0x04, 0x9b, 0x0c, 0x56, 0xa3, 0x24, 0xc2, 0x25, 0x14, 0x08, 0xb2, 0x3f, 0x20, - 0xb1, 0x28, 0x31, 0xb7, 0x38, 0x28, 0xb5, 0xb0, 0x34, 0xb5, 0xb8, 0x44, 0x29, 0x84, 0x4b, 0x18, - 0x45, 0xb4, 0xb8, 0x20, 0x3f, 0xaf, 0x38, 0x55, 0xc8, 0x96, 0x8b, 0xad, 0x00, 0x2c, 0x22, 0xc1, - 0xa8, 0xc0, 0xa8, 0xc1, 0x6d, 0x24, 0xaf, 0x87, 0xc3, 0xb9, 0x7a, 0x10, 0x8d, 0x4e, 0x2c, 0x27, - 0xee, 0xc9, 0x33, 0x04, 0x41, 0x35, 0x29, 0x89, 0x73, 0x89, 0x82, 0x4d, 0xf5, 0xcc, 0x4b, 0xcb, - 0x01, 0x3b, 0x14, 0x66, 0x5d, 0x1a, 0x97, 0x18, 0xba, 0x04, 0xd4, 0x46, 0x1f, 0x2e, 0xce, 0x4c, - 0x98, 0x20, 0xd8, 0x52, 0x1e, 0x27, 0x3d, 0x90, 0x99, 0xb7, 0xee, 0xc9, 0xab, 0xa5, 0x67, 0x96, - 0x64, 0x94, 0x26, 0x81, 0x9c, 0xa0, 0x9f, 0x9c, 0x5f, 0x9c, 0x9b, 0x5f, 0x0c, 0xa5, 0x74, 0x8b, - 0x53, 0xb2, 0xf5, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0xf5, 0x5c, 0x52, 0x93, 0x83, 0x10, 0x06, 0x28, - 0xc9, 0x71, 0xc9, 0x80, 0xed, 0x71, 0xcc, 0xcb, 0x2b, 0x4d, 0xcc, 0x09, 0x28, 0xca, 0x2f, 0xcb, - 0x2c, 0x06, 0x85, 0x17, 0xcc, 0x1d, 0x35, 0x5c, 0xb2, 0x38, 0xe4, 0xa1, 0xce, 0x89, 0xe6, 0x12, - 0x4c, 0x04, 0xcb, 0xc5, 0x17, 0xc0, 0x25, 0xc9, 0x74, 0x96, 0x40, 0x22, 0x9a, 0x25, 0x46, 0x77, - 0x99, 0xb9, 0x58, 0xc1, 0xd6, 0x0b, 0x75, 0x30, 0x72, 0xb1, 0x41, 0x42, 0x50, 0x48, 0x1b, 0x67, - 0x10, 0x63, 0x46, 0x9b, 0x94, 0x0e, 0x71, 0x8a, 0x21, 0x9e, 0x51, 0x52, 0x6e, 0xba, 0xfc, 0x64, - 0x32, 0x93, 0xac, 0x90, 0x34, 0xcc, 0x9d, 0x28, 0x69, 0x04, 0x12, 0x67, 0x42, 0x53, 0x18, 0xb9, - 0x38, 0xe1, 0xd1, 0x22, 0xa4, 0x87, 0xdf, 0x02, 0xf4, 0x88, 0x95, 0xd2, 0x27, 0x5a, 0x3d, 0xd4, - 0x4d, 0x6a, 0x60, 0x37, 0x29, 0x08, 0xc9, 0x61, 0x75, 0x13, 0x3c, 0x26, 0x85, 0x36, 0x32, 0x72, - 0x09, 0xa0, 0xc7, 0x92, 0x90, 0x29, 0x7e, 0xdb, 0x70, 0xc4, 0xba, 0x94, 0x19, 0xa9, 0xda, 0xa0, - 0x6e, 0xd5, 0x03, 0xbb, 0x55, 0x43, 0x48, 0x0d, 0xab, 0x5b, 0x31, 0xd2, 0x89, 0x93, 0xda, 0x89, - 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, - 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0xf1, 0x54, 0x40, 0xf4, 0x82, 0x53, 0x47, - 0x12, 0x1b, 0x38, 0x67, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x64, 0x17, 0xda, 0xda, 0x31, - 0x04, 0x00, 0x00, + // 446 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xcf, 0xae, 0xd2, 0x40, + 0x14, 0xc6, 0x3b, 0xfe, 0x21, 0xb9, 0xe3, 0x5d, 0x5c, 0xc7, 0xab, 0xd7, 0xf4, 0x5e, 0x06, 0x52, + 0x12, 0x42, 0xa2, 0x99, 0x09, 0x18, 0xdd, 0xb9, 0x80, 0xb8, 0x31, 0x71, 0x81, 0xc4, 0x95, 0x2e, + 0xcc, 0x50, 0xc7, 0xda, 0xd8, 0xce, 0x94, 0xce, 0x40, 0x64, 0xeb, 0xca, 0xa5, 0x89, 0xbe, 0x88, + 0x6f, 0xc1, 0x92, 0xc4, 0x8d, 0x31, 0x91, 0x18, 0xf0, 0x41, 0x4c, 0xa7, 0x05, 0x42, 0xa1, 0x04, + 0x76, 0xe4, 0x9c, 0xef, 0x9c, 0xef, 0xc7, 0xf9, 0xa6, 0xb0, 0xe6, 0xca, 0x30, 0x92, 0x8a, 0xf5, + 0x03, 0x4e, 0x43, 0x5f, 0x68, 0x3a, 0x6a, 0xf6, 0xb9, 0x66, 0x4d, 0x3a, 0x18, 0xf2, 0x78, 0x4c, + 0xa2, 0x58, 0x6a, 0x89, 0x2e, 0xd6, 0x22, 0x92, 0x88, 0x48, 0x26, 0xb2, 0xcf, 0x3d, 0xe9, 0x49, + 0xa3, 0xa1, 0xc9, 0xaf, 0x54, 0x6e, 0x5f, 0x79, 0x52, 0x7a, 0x01, 0xa7, 0x2c, 0xf2, 0x29, 0x13, + 0x42, 0x6a, 0xa6, 0x7d, 0x29, 0x54, 0xd6, 0x75, 0x8a, 0x1c, 0xcd, 0x66, 0xa3, 0x71, 0xce, 0x21, + 0x7a, 0x99, 0xf8, 0x77, 0x59, 0xcc, 0x42, 0xd5, 0xe3, 0x83, 0x21, 0x57, 0xda, 0x79, 0x05, 0xef, + 0x6c, 0x54, 0x55, 0x24, 0x85, 0xe2, 0xe8, 0x29, 0x2c, 0x45, 0xa6, 0x72, 0x1f, 0x54, 0x41, 0xe3, + 0x56, 0xab, 0x42, 0x0a, 0x70, 0x49, 0x3a, 0xd8, 0xb9, 0x31, 0x99, 0x55, 0xac, 0x5e, 0x36, 0xe4, + 0x5c, 0xc0, 0xbb, 0x66, 0xeb, 0x73, 0xf1, 0x3e, 0x30, 0xa0, 0x4b, 0xbb, 0x37, 0xf0, 0x5e, 0xbe, + 0x91, 0x39, 0xb6, 0xe1, 0x89, 0xbf, 0x2c, 0x1a, 0xd3, 0xd3, 0x4e, 0x2d, 0xd9, 0xf9, 0x7b, 0x56, + 0xb9, 0x74, 0xa5, 0x0a, 0xa5, 0x52, 0xef, 0x3e, 0x12, 0x5f, 0xd2, 0x90, 0xe9, 0x0f, 0xe4, 0x05, + 0xf7, 0x98, 0x3b, 0x7e, 0xc6, 0xdd, 0xde, 0x7a, 0xca, 0xc1, 0xf0, 0xca, 0x2c, 0x6f, 0x0b, 0x31, + 0x64, 0x41, 0x37, 0x96, 0x23, 0x5f, 0x25, 0x47, 0x5a, 0x9a, 0x0f, 0x60, 0xb9, 0xa0, 0x9f, 0x31, + 0x74, 0xe1, 0x6d, 0x66, 0x7a, 0x6f, 0xa3, 0x55, 0xf3, 0x18, 0x96, 0x33, 0x96, 0xdb, 0xdc, 0xfa, + 0x73, 0x1d, 0xde, 0x34, 0x9e, 0xe8, 0x0b, 0x80, 0xa5, 0xf4, 0x56, 0xe8, 0x41, 0xe1, 0x31, 0xb7, + 0x03, 0xb2, 0x1f, 0x1e, 0x26, 0x4e, 0xff, 0x81, 0x53, 0xfb, 0xfc, 0xf3, 0xdf, 0xb7, 0x6b, 0x65, + 0x74, 0x49, 0x53, 0xce, 0xcd, 0xd7, 0x90, 0xa6, 0x83, 0xbe, 0x03, 0x78, 0xb2, 0x0a, 0x00, 0x91, + 0xfd, 0x06, 0xf9, 0x08, 0x6d, 0x7a, 0xb0, 0x3e, 0x63, 0xaa, 0x1b, 0xa6, 0x2a, 0xc2, 0x3b, 0x99, + 0x56, 0xf1, 0xa1, 0x1f, 0x00, 0x9e, 0xe5, 0xa3, 0x41, 0x8f, 0xf7, 0xbb, 0x15, 0x44, 0x6d, 0x3f, + 0x39, 0x76, 0x2c, 0x63, 0x25, 0x86, 0xb5, 0x81, 0xea, 0x3b, 0x59, 0xb7, 0x1e, 0x47, 0xa7, 0x3e, + 0x99, 0x63, 0x30, 0x9d, 0x63, 0xf0, 0x77, 0x8e, 0xc1, 0xd7, 0x05, 0xb6, 0xa6, 0x0b, 0x6c, 0xfd, + 0x5a, 0x60, 0xeb, 0xf5, 0xe9, 0xa7, 0x74, 0x56, 0x8f, 0x23, 0xae, 0xfa, 0x25, 0xf3, 0x0d, 0x3e, + 0xfa, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xd0, 0xde, 0xc4, 0x55, 0x1b, 0x04, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/ratelimit/ibc_middleware.go b/x/ratelimit/ibc_middleware.go index f22829935..e7f5b217a 100644 --- a/x/ratelimit/ibc_middleware.go +++ b/x/ratelimit/ibc_middleware.go @@ -7,11 +7,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - "github.com/cosmos/ibc-go/v7/modules/core/exported" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" + "github.com/cosmos/ibc-go/v8/modules/core/exported" ) var _ porttypes.Middleware = &IBCMiddleware{} diff --git a/x/ratelimit/keeper/epoch.go b/x/ratelimit/keeper/epoch.go index 0039c067a..95fc28c1d 100644 --- a/x/ratelimit/keeper/epoch.go +++ b/x/ratelimit/keeper/epoch.go @@ -8,6 +8,7 @@ import ( "github.com/notional-labs/composable/v6/x/ratelimit/types" + storetypes "cosmossdk.io/store/types" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -74,7 +75,7 @@ func (k Keeper) DeleteEpochInfo(ctx sdk.Context, identifier string) { func (k Keeper) IterateEpochInfo(ctx sdk.Context, fn func(index int64, epochInfo types.EpochInfo) (stop bool)) { store := ctx.KVStore(k.storeKey) - iterator := sdk.KVStorePrefixIterator(store, types.EpochKeyPrefix) + iterator := storetypes.KVStorePrefixIterator(store, types.EpochKeyPrefix) defer iterator.Close() i := int64(0) diff --git a/x/ratelimit/keeper/grpc_query.go b/x/ratelimit/keeper/grpc_query.go index 2aee780d2..c99e7b0c4 100644 --- a/x/ratelimit/keeper/grpc_query.go +++ b/x/ratelimit/keeper/grpc_query.go @@ -5,8 +5,8 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + ibctmtypes "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" "github.com/notional-labs/composable/v6/x/ratelimit/types" ) diff --git a/x/ratelimit/keeper/keeper.go b/x/ratelimit/keeper/keeper.go index 243241ca4..1e81dc603 100644 --- a/x/ratelimit/keeper/keeper.go +++ b/x/ratelimit/keeper/keeper.go @@ -3,12 +3,12 @@ package keeper import ( "fmt" - "github.com/cometbft/cometbft/libs/log" + "cosmossdk.io/log" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" "github.com/notional-labs/composable/v6/x/ratelimit/types" tfmwkeeper "github.com/notional-labs/composable/v6/x/transfermiddleware/keeper" diff --git a/x/ratelimit/keeper/packet.go b/x/ratelimit/keeper/packet.go index 85e8510ab..58bc5e7a3 100644 --- a/x/ratelimit/keeper/packet.go +++ b/x/ratelimit/keeper/packet.go @@ -8,11 +8,11 @@ import ( "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" "github.com/notional-labs/composable/v6/x/ratelimit/types" ) @@ -137,7 +137,7 @@ func (k Keeper) ParsePacketInfo(packet channeltypes.Packet, direction types.Pack denom = k.ParseDenomFromRecvPacket(packet, packetData) } - amount, ok := sdk.NewIntFromString(packetData.Amount) + amount, ok := math.NewIntFromString(packetData.Amount) if !ok { return RateLimitedPacketInfo{}, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "Unable to cast packet amount '%s' to sdkmath.Int", packetData.Amount) diff --git a/x/ratelimit/keeper/rate_limit.go b/x/ratelimit/keeper/rate_limit.go index 8ef5514d8..1994f5878 100644 --- a/x/ratelimit/keeper/rate_limit.go +++ b/x/ratelimit/keeper/rate_limit.go @@ -7,7 +7,8 @@ import ( errorsmod "cosmossdk.io/errors" "cosmossdk.io/math" - "github.com/cosmos/cosmos-sdk/store/prefix" + "cosmossdk.io/store/prefix" + storetypes "cosmossdk.io/store/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -342,7 +343,7 @@ func (k Keeper) GetAllPendingSendPackets(ctx sdk.Context) []string { func (k Keeper) RemoveAllChannelPendingSendPackets(ctx sdk.Context, channelID string) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.PendingSendPacketPrefix) - iterator := sdk.KVStorePrefixIterator(store, types.KeyPrefix(channelID)) + iterator := storetypes.KVStorePrefixIterator(store, types.KeyPrefix(channelID)) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { diff --git a/x/ratelimit/module.go b/x/ratelimit/module.go index 70a96f533..c17e7b48c 100644 --- a/x/ratelimit/module.go +++ b/x/ratelimit/module.go @@ -77,6 +77,12 @@ type AppModule struct { keeper *keeper.Keeper } +// IsAppModule implements module.AppModule. +func (AppModule) IsAppModule() {} + +// IsOnePerModuleType implements module.AppModule. +func (AppModule) IsOnePerModuleType() {} + // NewAppModule creates a new router module func NewAppModule(k *keeper.Keeper) AppModule { return AppModule{ @@ -130,28 +136,18 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw // ConsensusVersion implements AppModule/ConsensusVersion. func (AppModule) ConsensusVersion() uint64 { return 1 } -// BeginBlock implements the AppModule interface -func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) { - am.keeper.BeginBlocker(ctx) -} - -// EndBlock implements the AppModule interface -func (am AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - return []abci.ValidatorUpdate{} -} - // AppModuleSimulation functions // GenerateGenesisState creates a randomized GenState of the router module. func (AppModule) GenerateGenesisState(_ *module.SimulationState) {} // ProposalContents doesn't return any content functions for governance proposals. -func (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedProposalContent { //nolint:staticcheck // WeightedProposalContent is necessary to satisfy the module interface +func (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedProposalContent { return nil } // RegisterStoreDecoder registers a decoder for router module's types -func (am AppModule) RegisterStoreDecoder(_ sdk.StoreDecoderRegistry) {} +func (am AppModule) RegisterStoreDecoder(registry simtypes.StoreDecoderRegistry) {} // WeightedOperations returns the all the router module operations with their respective weights. func (am AppModule) WeightedOperations(_ module.SimulationState) []simtypes.WeightedOperation { diff --git a/x/ratelimit/relay_test.go b/x/ratelimit/relay_test.go index 1e2b090ce..855125c4f 100644 --- a/x/ratelimit/relay_test.go +++ b/x/ratelimit/relay_test.go @@ -3,9 +3,10 @@ package ratelimit_test import ( "testing" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" "github.com/stretchr/testify/suite" customibctesting "github.com/notional-labs/composable/v6/app/ibctesting" @@ -24,7 +25,7 @@ type RateLimitTestSuite struct { } func (suite *RateLimitTestSuite) SetupTest() { - suite.coordinator = customibctesting.NewCoordinator(suite.T(), 4) + suite.coordinator = customibctesting.NewCoordinator(suite.T(), 3) suite.chainA = suite.coordinator.GetChain(customibctesting.GetChainID(1)) suite.chainB = suite.coordinator.GetChain(customibctesting.GetChainID(2)) suite.chainC = suite.coordinator.GetChain(customibctesting.GetChainID(3)) @@ -46,7 +47,7 @@ func TestKeeperTestSuite(t *testing.T) { func (suite *RateLimitTestSuite) TestReceiveIBCToken() { var ( - transferAmount = sdk.NewInt(1_000_000_000_000) + transferAmount = sdkmath.NewInt(1_000_000_000_000) // when transfer via sdk transfer from A (module) -> B (contract) ibcDenom = "ibc/C053D637CCA2A2BA030E2C5EE1B28A16F71CCB0E45E8BE52766DC1B241B77878" nativeDenom = "ppica" @@ -110,16 +111,16 @@ func (suite *RateLimitTestSuite) TestReceiveIBCToken() { msgAddRateLimit := ratelimittypes.MsgAddRateLimit{ Denom: nativeDenom, ChannelID: path.EndpointB.ChannelID, - MaxPercentSend: sdk.NewInt(5), // 50_000_000_000 > minRateLimitAmount(10_000_000_000) => RateLimit = 50_000_000_000 - MaxPercentRecv: sdk.NewInt(5), // 50_000_000_000 > minRateLimitAmount(10_000_000_000) => RateLimit = 50_000_000_000 - MinRateLimitAmount: sdk.NewInt(10_000_000_000), + MaxPercentSend: sdkmath.NewInt(5), // 50_000_000_000 > minRateLimitAmount(10_000_000_000) => RateLimit = 50_000_000_000 + MaxPercentRecv: sdkmath.NewInt(5), // 50_000_000_000 > minRateLimitAmount(10_000_000_000) => RateLimit = 50_000_000_000 + MinRateLimitAmount: sdkmath.NewInt(10_000_000_000), DurationHours: 1, } err = chainBRateLimitKeeper.AddRateLimit(suite.chainB.GetContext(), &msgAddRateLimit) suite.Require().NoError(err) // send from A to B - transferAmount = transferAmount.Mul(sdk.NewInt(5)).Quo(sdk.NewInt(100)) + transferAmount = transferAmount.Mul(sdkmath.NewInt(5)).Quo(sdkmath.NewInt(100)) nativeTokenSendOnChainA = sdk.NewCoin(sdk.DefaultBondDenom, transferAmount) msg = transfertypes.NewMsgTransfer(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, nativeTokenSendOnChainA, suite.chainA.SenderAccount.GetAddress().String(), suite.chainB.SenderAccount.GetAddress().String(), timeoutHeight, 0, "") _, err = suite.chainA.SendMsgs(msg) @@ -166,7 +167,7 @@ func (suite *RateLimitTestSuite) TestReceiveIBCToken() { func (suite *RateLimitTestSuite) TestSendIBCToken() { var ( - transferAmount = sdk.NewInt(1_000_000_000_000) + transferAmount = sdkmath.NewInt(1_000_000_000_000) // when transfer via sdk transfer from A (module) -> B (contract) ibcDenom = "ibc/C053D637CCA2A2BA030E2C5EE1B28A16F71CCB0E45E8BE52766DC1B241B77878" nativeDenom = "ppica" @@ -222,16 +223,16 @@ func (suite *RateLimitTestSuite) TestSendIBCToken() { msgAddRateLimit := ratelimittypes.MsgAddRateLimit{ Denom: nativeDenom, ChannelID: path.EndpointB.ChannelID, - MaxPercentSend: sdk.NewInt(5), // 50_000_000_000 > minRateLimitAmount(10_000_000_000) => RateLimit = 50_000_000_000 - MaxPercentRecv: sdk.NewInt(5), // 50_000_000_000 > minRateLimitAmount(10_000_000_000) => RateLimit = 50_000_000_000 - MinRateLimitAmount: sdk.NewInt(10_000_000_000), + MaxPercentSend: sdkmath.NewInt(5), // 50_000_000_000 > minRateLimitAmount(10_000_000_000) => RateLimit = 50_000_000_000 + MaxPercentRecv: sdkmath.NewInt(5), // 50_000_000_000 > minRateLimitAmount(10_000_000_000) => RateLimit = 50_000_000_000 + MinRateLimitAmount: sdkmath.NewInt(10_000_000_000), DurationHours: 1, } err = chainBRateLimitKeeper.AddRateLimit(suite.chainB.GetContext(), &msgAddRateLimit) suite.Require().NoError(err) // send from B to A - transferAmount = transferAmount.Mul(sdk.NewInt(5)).Quo(sdk.NewInt(100)) + transferAmount = transferAmount.Mul(sdkmath.NewInt(5)).Quo(sdkmath.NewInt(100)) nativeTokenSendOnChainB := sdk.NewCoin(nativeDenom, transferAmount) msg = transfertypes.NewMsgTransfer(path.EndpointB.ChannelConfig.PortID, path.EndpointB.ChannelID, nativeTokenSendOnChainB, suite.chainB.SenderAccount.GetAddress().String(), suite.chainA.SenderAccount.GetAddress().String(), timeoutHeight, 0, "") _, err = suite.chainB.SendMsgs(msg) @@ -274,7 +275,7 @@ func (suite *RateLimitTestSuite) TestSendIBCToken() { func (suite *RateLimitTestSuite) TestReceiveIBCTokenWithMinRateLimitAmount() { var ( - transferAmount = sdk.NewInt(100_000_000_000) + transferAmount = sdkmath.NewInt(100_000_000_000) // when transfer via sdk transfer from A (module) -> B (contract) ibcDenom = "ibc/C053D637CCA2A2BA030E2C5EE1B28A16F71CCB0E45E8BE52766DC1B241B77878" nativeDenom = "ppica" @@ -338,16 +339,16 @@ func (suite *RateLimitTestSuite) TestReceiveIBCTokenWithMinRateLimitAmount() { msgAddRateLimit := ratelimittypes.MsgAddRateLimit{ Denom: nativeDenom, ChannelID: path.EndpointB.ChannelID, - MaxPercentSend: sdk.NewInt(5), // 5_000_000_000 < minRateLimitAmount(10_000_000_000) => RateLimit = 10_000_000_000 - MaxPercentRecv: sdk.NewInt(5), // 5_000_000_000 < minRateLimitAmount(10_000_000_000) => RateLimit = 10_000_000_000 - MinRateLimitAmount: sdk.NewInt(10_000_000_000), + MaxPercentSend: sdkmath.NewInt(5), // 5_000_000_000 < minRateLimitAmount(10_000_000_000) => RateLimit = 10_000_000_000 + MaxPercentRecv: sdkmath.NewInt(5), // 5_000_000_000 < minRateLimitAmount(10_000_000_000) => RateLimit = 10_000_000_000 + MinRateLimitAmount: sdkmath.NewInt(10_000_000_000), DurationHours: 1, } err = chainBRateLimitKeeper.AddRateLimit(suite.chainB.GetContext(), &msgAddRateLimit) suite.Require().NoError(err) // send from A to B - transferAmount = sdk.NewInt(10_000_000_000) + transferAmount = sdkmath.NewInt(10_000_000_000) nativeTokenSendOnChainA = sdk.NewCoin(sdk.DefaultBondDenom, transferAmount) msg = transfertypes.NewMsgTransfer(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, nativeTokenSendOnChainA, suite.chainA.SenderAccount.GetAddress().String(), suite.chainB.SenderAccount.GetAddress().String(), timeoutHeight, 0, "") _, err = suite.chainA.SendMsgs(msg) @@ -394,7 +395,7 @@ func (suite *RateLimitTestSuite) TestReceiveIBCTokenWithMinRateLimitAmount() { func (suite *RateLimitTestSuite) TestSendIBCTokenWithMinRateLimitAmount() { var ( - transferAmount = sdk.NewInt(100_000_000_000) + transferAmount = sdkmath.NewInt(100_000_000_000) // when transfer via sdk transfer from A (module) -> B (contract) ibcDenom = "ibc/C053D637CCA2A2BA030E2C5EE1B28A16F71CCB0E45E8BE52766DC1B241B77878" nativeDenom = "ppica" @@ -459,16 +460,16 @@ func (suite *RateLimitTestSuite) TestSendIBCTokenWithMinRateLimitAmount() { msgAddRateLimit := ratelimittypes.MsgAddRateLimit{ Denom: nativeDenom, ChannelID: path.EndpointB.ChannelID, - MaxPercentSend: sdk.NewInt(5), // 5_000_000_000 < minRateLimitAmount(10_000_000_000) => RateLimit = 10_000_000_000 - MaxPercentRecv: sdk.NewInt(5), // 5_000_000_000 < minRateLimitAmount(10_000_000_000) => RateLimit = 10_000_000_000 - MinRateLimitAmount: sdk.NewInt(10_000_000_000), + MaxPercentSend: sdkmath.NewInt(5), // 5_000_000_000 < minRateLimitAmount(10_000_000_000) => RateLimit = 10_000_000_000 + MaxPercentRecv: sdkmath.NewInt(5), // 5_000_000_000 < minRateLimitAmount(10_000_000_000) => RateLimit = 10_000_000_000 + MinRateLimitAmount: sdkmath.NewInt(10_000_000_000), DurationHours: 1, } err = chainBRateLimitKeeper.AddRateLimit(suite.chainB.GetContext(), &msgAddRateLimit) suite.Require().NoError(err) // send from B to A - transferAmount = sdk.NewInt(10_000_000_000) + transferAmount = sdkmath.NewInt(10_000_000_000) nativeTokenSendOnChainB := sdk.NewCoin(nativeDenom, transferAmount) msg = transfertypes.NewMsgTransfer(path.EndpointB.ChannelConfig.PortID, path.EndpointB.ChannelID, nativeTokenSendOnChainB, suite.chainB.SenderAccount.GetAddress().String(), suite.chainA.SenderAccount.GetAddress().String(), timeoutHeight, 0, "") _, err = suite.chainB.SendMsgs(msg) diff --git a/x/ratelimit/types/codec.go b/x/ratelimit/types/codec.go index a9d5d4676..664db3e48 100644 --- a/x/ratelimit/types/codec.go +++ b/x/ratelimit/types/codec.go @@ -6,9 +6,6 @@ import ( codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" "github.com/cosmos/cosmos-sdk/types/msgservice" - authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec" - govcodec "github.com/cosmos/cosmos-sdk/x/gov/codec" - groupcodec "github.com/cosmos/cosmos-sdk/x/group/codec" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -45,7 +42,7 @@ func init() { // Register all Amino interfaces and concrete types on the authz and gov Amino codec so that this can later be // used to properly serialize MsgGrant, MsgExec and MsgSubmitProposal instances - RegisterLegacyAminoCodec(authzcodec.Amino) - RegisterLegacyAminoCodec(govcodec.Amino) - RegisterLegacyAminoCodec(groupcodec.Amino) + // RegisterLegacyAminoCodec(authzcodec.Amino) + // RegisterLegacyAminoCodec(govcodec.Amino) + // RegisterLegacyAminoCodec(groupcodec.Amino) } diff --git a/x/ratelimit/types/expected_keepers.go b/x/ratelimit/types/expected_keepers.go index 96e72013f..7628c6fcf 100644 --- a/x/ratelimit/types/expected_keepers.go +++ b/x/ratelimit/types/expected_keepers.go @@ -1,15 +1,17 @@ package types import ( + context "context" + sdk "github.com/cosmos/cosmos-sdk/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/cosmos/ibc-go/v7/modules/core/exported" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + "github.com/cosmos/ibc-go/v8/modules/core/exported" ) // BankKeeper defines the banking contract that must be fulfilled when // creating a x/ratelimit keeper. type BankKeeper interface { - GetSupply(ctx sdk.Context, denom string) sdk.Coin + GetSupply(ctx context.Context, denom string) sdk.Coin } // ChannelKeeper defines the channel contract that must be fulfilled when diff --git a/x/ratelimit/types/msg.go b/x/ratelimit/types/msg.go index 5a100c3e8..9105fb6a9 100644 --- a/x/ratelimit/types/msg.go +++ b/x/ratelimit/types/msg.go @@ -5,7 +5,7 @@ import ( "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - host "github.com/cosmos/ibc-go/v7/modules/core/24-host" + host "github.com/cosmos/ibc-go/v8/modules/core/24-host" ) const ( diff --git a/x/ratelimit/types/ratelimit.pb.go b/x/ratelimit/types/ratelimit.pb.go index 5c69f9925..706963a06 100644 --- a/x/ratelimit/types/ratelimit.pb.go +++ b/x/ratelimit/types/ratelimit.pb.go @@ -4,8 +4,8 @@ package types import ( + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" - github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" io "io" @@ -102,9 +102,9 @@ func (m *Path) GetChannelID() string { } type Quota struct { - MaxPercentSend github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,1,opt,name=max_percent_send,json=maxPercentSend,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"max_percent_send"` - MaxPercentRecv github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=max_percent_recv,json=maxPercentRecv,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"max_percent_recv"` - DurationHours uint64 `protobuf:"varint,3,opt,name=duration_hours,json=durationHours,proto3" json:"duration_hours,omitempty"` + MaxPercentSend cosmossdk_io_math.Int `protobuf:"bytes,1,opt,name=max_percent_send,json=maxPercentSend,proto3,customtype=cosmossdk.io/math.Int" json:"max_percent_send"` + MaxPercentRecv cosmossdk_io_math.Int `protobuf:"bytes,2,opt,name=max_percent_recv,json=maxPercentRecv,proto3,customtype=cosmossdk.io/math.Int" json:"max_percent_recv"` + DurationHours uint64 `protobuf:"varint,3,opt,name=duration_hours,json=durationHours,proto3" json:"duration_hours,omitempty"` } func (m *Quota) Reset() { *m = Quota{} } @@ -148,9 +148,9 @@ func (m *Quota) GetDurationHours() uint64 { } type Flow struct { - Inflow github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,1,opt,name=inflow,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"inflow"` - Outflow github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=outflow,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"outflow"` - ChannelValue github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,3,opt,name=channel_value,json=channelValue,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"channel_value"` + Inflow cosmossdk_io_math.Int `protobuf:"bytes,1,opt,name=inflow,proto3,customtype=cosmossdk.io/math.Int" json:"inflow"` + Outflow cosmossdk_io_math.Int `protobuf:"bytes,2,opt,name=outflow,proto3,customtype=cosmossdk.io/math.Int" json:"outflow"` + ChannelValue cosmossdk_io_math.Int `protobuf:"bytes,3,opt,name=channel_value,json=channelValue,proto3,customtype=cosmossdk.io/math.Int" json:"channel_value"` } func (m *Flow) Reset() { *m = Flow{} } @@ -187,10 +187,10 @@ func (m *Flow) XXX_DiscardUnknown() { var xxx_messageInfo_Flow proto.InternalMessageInfo type RateLimit struct { - Path *Path `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - Quota *Quota `protobuf:"bytes,2,opt,name=quota,proto3" json:"quota,omitempty"` - Flow *Flow `protobuf:"bytes,3,opt,name=flow,proto3" json:"flow,omitempty"` - MinRateLimitAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=min_rate_limit_amount,json=minRateLimitAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"min_rate_limit_amount"` + Path *Path `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + Quota *Quota `protobuf:"bytes,2,opt,name=quota,proto3" json:"quota,omitempty"` + Flow *Flow `protobuf:"bytes,3,opt,name=flow,proto3" json:"flow,omitempty"` + MinRateLimitAmount cosmossdk_io_math.Int `protobuf:"bytes,4,opt,name=min_rate_limit_amount,json=minRateLimitAmount,proto3,customtype=cosmossdk.io/math.Int" json:"min_rate_limit_amount"` } func (m *RateLimit) Reset() { *m = RateLimit{} } @@ -313,42 +313,41 @@ func init() { } var fileDescriptor_0232bb247554c4df = []byte{ - // 556 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xcf, 0x6f, 0xd3, 0x30, - 0x14, 0x4e, 0xb6, 0xb4, 0x50, 0x97, 0x6e, 0xc5, 0x1a, 0x53, 0x55, 0xa1, 0x74, 0x0a, 0x02, 0x4d, - 0x30, 0x52, 0x6d, 0x48, 0x48, 0x3b, 0xf6, 0xd7, 0xb4, 0xc2, 0x84, 0x4a, 0x8a, 0x06, 0xe2, 0x12, - 0xb9, 0x89, 0x69, 0xac, 0x25, 0x76, 0x71, 0x9c, 0xae, 0xfc, 0x07, 0x1c, 0xb9, 0x72, 0xe6, 0x9f, - 0xd9, 0x71, 0x47, 0xc4, 0xa1, 0x42, 0xed, 0x99, 0xff, 0x01, 0xd9, 0x49, 0xd7, 0x89, 0xc3, 0x04, - 0xe5, 0x94, 0xbc, 0xe7, 0xef, 0x7d, 0xf6, 0xf7, 0xde, 0x67, 0x83, 0x3d, 0x8f, 0x45, 0x23, 0x16, - 0xa3, 0x41, 0x88, 0xeb, 0x1c, 0x09, 0x1c, 0x92, 0x88, 0x88, 0xfa, 0x78, 0x7f, 0x80, 0x05, 0xda, - 0x5f, 0x66, 0xec, 0x11, 0x67, 0x82, 0xc1, 0xfb, 0x4b, 0xb4, 0xbd, 0x5c, 0xcb, 0xd0, 0xd5, 0xad, - 0x21, 0x1b, 0x32, 0x05, 0xac, 0xcb, 0xbf, 0xb4, 0xc6, 0x7a, 0x01, 0x8c, 0x1e, 0x12, 0x01, 0xdc, - 0x02, 0x39, 0x1f, 0x53, 0x16, 0x55, 0xf4, 0x1d, 0x7d, 0xb7, 0xe0, 0xa4, 0x01, 0xdc, 0x03, 0xc0, - 0x0b, 0x10, 0xa5, 0x38, 0x74, 0x89, 0x5f, 0x59, 0x93, 0x4b, 0xcd, 0xd2, 0x6c, 0x5a, 0x2b, 0xb4, - 0xd2, 0x6c, 0xb7, 0xed, 0x14, 0x32, 0x40, 0xd7, 0xb7, 0x66, 0x3a, 0xc8, 0xbd, 0x4e, 0x98, 0x40, - 0xf0, 0x1d, 0x28, 0x47, 0x68, 0xe2, 0x8e, 0x30, 0xf7, 0x30, 0x15, 0x6e, 0x8c, 0xa9, 0x9f, 0x12, - 0x37, 0xed, 0x8b, 0x69, 0x4d, 0xfb, 0x31, 0xad, 0x3d, 0x1a, 0x12, 0x11, 0x24, 0x03, 0xdb, 0x63, - 0x51, 0xdd, 0x63, 0x71, 0xc4, 0xe2, 0xec, 0xf3, 0x34, 0xf6, 0xcf, 0xea, 0xe2, 0xd3, 0x08, 0xc7, - 0x76, 0x97, 0x0a, 0x67, 0x23, 0x42, 0x93, 0x5e, 0x4a, 0xd3, 0xc7, 0xd4, 0xff, 0x93, 0x99, 0x63, - 0x6f, 0x9c, 0x9d, 0xeb, 0x3f, 0x98, 0x1d, 0xec, 0x8d, 0xe1, 0x43, 0xb0, 0xe1, 0x27, 0x1c, 0x09, - 0xc2, 0xa8, 0x1b, 0xb0, 0x84, 0xc7, 0x95, 0xf5, 0x1d, 0x7d, 0xd7, 0x70, 0x4a, 0x8b, 0xec, 0xb1, - 0x4c, 0x5a, 0xbf, 0x74, 0x60, 0x1c, 0x85, 0xec, 0x1c, 0x1e, 0x81, 0x3c, 0xa1, 0x1f, 0x42, 0x76, - 0xbe, 0xa2, 0xb2, 0xac, 0x1a, 0x1e, 0x83, 0x5b, 0x2c, 0x11, 0x8a, 0x68, 0x35, 0x21, 0x8b, 0x72, - 0xd8, 0x07, 0xa5, 0xc5, 0xb4, 0xc6, 0x28, 0x4c, 0xb0, 0x12, 0xf0, 0xef, 0x7c, 0x77, 0x32, 0x92, - 0x53, 0xc9, 0x61, 0x7d, 0x5d, 0x03, 0x05, 0x07, 0x09, 0x7c, 0x22, 0xcd, 0x04, 0x9f, 0x03, 0x63, - 0x84, 0x44, 0xa0, 0x24, 0x17, 0x0f, 0x2c, 0xfb, 0x26, 0xc7, 0xd9, 0xd2, 0x58, 0x8e, 0xc2, 0xc3, - 0x43, 0x90, 0xfb, 0x28, 0x9d, 0xa1, 0x24, 0x16, 0x0f, 0x1e, 0xdc, 0x5c, 0xa8, 0x4c, 0xe4, 0xa4, - 0x15, 0x72, 0x4b, 0xd5, 0x9c, 0xf5, 0xbf, 0xd9, 0x52, 0x4e, 0xc6, 0x51, 0x78, 0x88, 0xc0, 0xbd, - 0x88, 0x50, 0x57, 0x62, 0x5c, 0x05, 0x72, 0x51, 0xc4, 0x12, 0x2a, 0x2a, 0xc6, 0x4a, 0x5d, 0x81, - 0x11, 0xa1, 0x57, 0x7d, 0x68, 0x28, 0x26, 0xeb, 0x04, 0x6c, 0xbf, 0x0d, 0x88, 0x3c, 0x43, 0x2c, - 0xb0, 0xdf, 0xf0, 0x7d, 0x8e, 0xe3, 0xb8, 0x87, 0x08, 0x87, 0xdb, 0x20, 0x2f, 0x4d, 0x8f, 0x79, - 0x76, 0x9f, 0xb2, 0x08, 0x56, 0xc1, 0x6d, 0x8e, 0x3d, 0x4c, 0xc6, 0x98, 0xa7, 0xd3, 0x76, 0xae, - 0xe2, 0xc7, 0x87, 0x60, 0xb3, 0x87, 0xbc, 0x33, 0x2c, 0xda, 0x84, 0x63, 0x4f, 0x3a, 0x0e, 0x6e, - 0x82, 0x62, 0xaf, 0xd1, 0x7a, 0xd9, 0x79, 0xe3, 0xf6, 0x3b, 0xaf, 0xda, 0x65, 0xed, 0x5a, 0xc2, - 0xe9, 0xb4, 0x4e, 0xcb, 0x7a, 0xd5, 0xf8, 0xfc, 0xcd, 0xd4, 0x9a, 0x4f, 0x2e, 0x66, 0xa6, 0x7e, - 0x39, 0x33, 0xf5, 0x9f, 0x33, 0x53, 0xff, 0x32, 0x37, 0xb5, 0xcb, 0xb9, 0xa9, 0x7d, 0x9f, 0x9b, - 0xda, 0xfb, 0xbb, 0x93, 0x6b, 0x0f, 0x87, 0x52, 0x33, 0xc8, 0xab, 0x9b, 0xff, 0xec, 0x77, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x60, 0xf4, 0xde, 0x6b, 0x5d, 0x04, 0x00, 0x00, + // 543 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x4d, 0x6f, 0xd3, 0x30, + 0x18, 0xc7, 0x93, 0x2d, 0x2d, 0xd4, 0xa5, 0x5b, 0xb1, 0xb6, 0xa9, 0xaa, 0x20, 0x9d, 0x82, 0x90, + 0x26, 0x98, 0x52, 0x6d, 0x08, 0xd0, 0x8e, 0x7d, 0x03, 0x0a, 0x13, 0x0a, 0x19, 0x1a, 0x12, 0x97, + 0xc8, 0x4d, 0xcc, 0x62, 0x2d, 0xb1, 0x8b, 0xe3, 0x74, 0xe5, 0x1b, 0xec, 0xc8, 0x77, 0xe0, 0x5b, + 0x70, 0xe2, 0xb8, 0xe3, 0x8e, 0x88, 0x43, 0x85, 0xda, 0x2f, 0x82, 0xec, 0xa4, 0xeb, 0xc4, 0x61, + 0xeb, 0x2d, 0xcf, 0x93, 0xdf, 0xff, 0x79, 0x37, 0xd8, 0xf5, 0x59, 0x3c, 0x64, 0x09, 0x1a, 0x44, + 0xb8, 0xc9, 0x91, 0xc0, 0x11, 0x89, 0x89, 0x68, 0x8e, 0xf6, 0x06, 0x58, 0xa0, 0xbd, 0x85, 0xc7, + 0x1e, 0x72, 0x26, 0x18, 0x7c, 0xb0, 0xa0, 0xed, 0xc5, 0xbf, 0x9c, 0xae, 0x6f, 0x9c, 0xb0, 0x13, + 0xa6, 0xc0, 0xa6, 0xfc, 0xca, 0x34, 0xd6, 0x5b, 0x60, 0x38, 0x48, 0x84, 0x70, 0x03, 0x14, 0x02, + 0x4c, 0x59, 0x5c, 0xd3, 0xb7, 0xf5, 0x9d, 0x92, 0x9b, 0x19, 0x70, 0x17, 0x00, 0x3f, 0x44, 0x94, + 0xe2, 0xc8, 0x23, 0x41, 0x6d, 0x45, 0xfe, 0x6a, 0x57, 0xa6, 0x93, 0x46, 0xa9, 0x93, 0x79, 0xfb, + 0x5d, 0xb7, 0x94, 0x03, 0xfd, 0xc0, 0xfa, 0xa5, 0x83, 0xc2, 0x87, 0x94, 0x09, 0x04, 0x5f, 0x83, + 0x6a, 0x8c, 0xc6, 0xde, 0x10, 0x73, 0x1f, 0x53, 0xe1, 0x25, 0x98, 0x06, 0x59, 0xe0, 0xf6, 0xc3, + 0x8b, 0x49, 0x43, 0xfb, 0x33, 0x69, 0x6c, 0xfa, 0x2c, 0x89, 0x59, 0x92, 0x04, 0xa7, 0x36, 0x61, + 0xcd, 0x18, 0x89, 0xd0, 0xee, 0x53, 0xe1, 0xae, 0xc5, 0x68, 0xec, 0x64, 0xaa, 0x23, 0x4c, 0x83, + 0xff, 0x03, 0x71, 0xec, 0x8f, 0xf2, 0x32, 0x96, 0x0f, 0xe4, 0x62, 0x7f, 0x04, 0x1f, 0x83, 0xb5, + 0x20, 0xe5, 0x48, 0x10, 0x46, 0xbd, 0x90, 0xa5, 0x3c, 0xa9, 0xad, 0x6e, 0xeb, 0x3b, 0x86, 0x5b, + 0x99, 0x7b, 0xdf, 0x48, 0xa7, 0xf5, 0x53, 0x07, 0xc6, 0xab, 0x88, 0x9d, 0xc1, 0xe7, 0xa0, 0x48, + 0xe8, 0x97, 0x88, 0x9d, 0x2d, 0x57, 0x77, 0x0e, 0xc3, 0x97, 0xe0, 0x0e, 0x4b, 0x85, 0xd2, 0x2d, + 0x55, 0xe6, 0x9c, 0x86, 0x6d, 0x50, 0x99, 0x4f, 0x7a, 0x84, 0xa2, 0x14, 0xab, 0xf2, 0x6e, 0x95, + 0xdf, 0xcb, 0x35, 0xc7, 0x52, 0x62, 0x9d, 0xaf, 0x80, 0x92, 0x8b, 0x04, 0x3e, 0x94, 0x7b, 0x87, + 0x2f, 0x80, 0x31, 0x44, 0x22, 0x54, 0xf5, 0x97, 0xf7, 0x2d, 0xfb, 0xa6, 0xe3, 0xb0, 0xe5, 0x0d, + 0xb8, 0x8a, 0x87, 0x07, 0xa0, 0xf0, 0x55, 0x2e, 0x51, 0x35, 0x50, 0xde, 0x7f, 0x74, 0xb3, 0x50, + 0xed, 0xdb, 0xcd, 0x14, 0x32, 0xa5, 0x6a, 0x7d, 0x75, 0x99, 0x94, 0x72, 0xcc, 0xae, 0xe2, 0xa1, + 0x03, 0x36, 0x63, 0x42, 0x3d, 0xc9, 0x78, 0x0a, 0xf2, 0x50, 0xcc, 0x52, 0x2a, 0x6a, 0xc6, 0x32, + 0x43, 0x80, 0x31, 0xa1, 0x57, 0x6d, 0xb7, 0x94, 0xd0, 0x3a, 0x04, 0x5b, 0x9f, 0x42, 0x22, 0x53, + 0x26, 0x02, 0x07, 0xad, 0x20, 0xe0, 0x38, 0x49, 0x1c, 0x44, 0x38, 0xdc, 0x02, 0x45, 0x79, 0x8e, + 0x98, 0xe7, 0x97, 0x9e, 0x5b, 0xb0, 0x0e, 0xee, 0x72, 0xec, 0x63, 0x32, 0xc2, 0x3c, 0x5b, 0x9d, + 0x7b, 0x65, 0x3f, 0x39, 0x00, 0xeb, 0x0e, 0xf2, 0x4f, 0xb1, 0xe8, 0x12, 0x8e, 0x7d, 0x79, 0x2d, + 0x70, 0x1d, 0x94, 0x9d, 0x56, 0xe7, 0x5d, 0xef, 0xa3, 0x77, 0xd4, 0x7b, 0xdf, 0xad, 0x6a, 0xd7, + 0x1c, 0x6e, 0xaf, 0x73, 0x5c, 0xd5, 0xeb, 0xc6, 0xf9, 0x0f, 0x53, 0x6b, 0x3f, 0xbd, 0x98, 0x9a, + 0xfa, 0xe5, 0xd4, 0xd4, 0xff, 0x4e, 0x4d, 0xfd, 0xfb, 0xcc, 0xd4, 0x2e, 0x67, 0xa6, 0xf6, 0x7b, + 0x66, 0x6a, 0x9f, 0xef, 0x8f, 0xaf, 0x3d, 0x69, 0xf1, 0x6d, 0x88, 0x93, 0x41, 0x51, 0xbd, 0xc9, + 0x67, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x58, 0xbf, 0x35, 0x49, 0xf7, 0x03, 0x00, 0x00, } func (m *Path) Marshal() (dAtA []byte, err error) { diff --git a/x/ratelimit/types/tx.pb.go b/x/ratelimit/types/tx.pb.go index 51439e8bd..d9337a4a5 100644 --- a/x/ratelimit/types/tx.pb.go +++ b/x/ratelimit/types/tx.pb.go @@ -5,8 +5,8 @@ package types import ( context "context" + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" - github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/cosmos-sdk/types/msgservice" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" @@ -39,13 +39,13 @@ type MsgAddRateLimit struct { // The channel that is limited when transferr ICS 20 packet of denom ChannelID string `protobuf:"bytes,3,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` // Max rate limit send - MaxPercentSend github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=max_percent_send,json=maxPercentSend,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"max_percent_send"` + MaxPercentSend cosmossdk_io_math.Int `protobuf:"bytes,4,opt,name=max_percent_send,json=maxPercentSend,proto3,customtype=cosmossdk.io/math.Int" json:"max_percent_send"` // Max rate limit receive - MaxPercentRecv github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,5,opt,name=max_percent_recv,json=maxPercentRecv,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"max_percent_recv"` + MaxPercentRecv cosmossdk_io_math.Int `protobuf:"bytes,5,opt,name=max_percent_recv,json=maxPercentRecv,proto3,customtype=cosmossdk.io/math.Int" json:"max_percent_recv"` // Duration of rate limit. The rate limit will reset when reach the duration. DurationHours uint64 `protobuf:"varint,6,opt,name=duration_hours,json=durationHours,proto3" json:"duration_hours,omitempty"` // Min amount of rate limit (allow transfer max(min-amout, rate-limit)) - MinRateLimitAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,7,opt,name=min_rate_limit_amount,json=minRateLimitAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"min_rate_limit_amount"` + MinRateLimitAmount cosmossdk_io_math.Int `protobuf:"bytes,7,opt,name=min_rate_limit_amount,json=minRateLimitAmount,proto3,customtype=cosmossdk.io/math.Int" json:"min_rate_limit_amount"` } func (m *MsgAddRateLimit) Reset() { *m = MsgAddRateLimit{} } @@ -148,13 +148,13 @@ var xxx_messageInfo_MsgAddRateLimitResponse proto.InternalMessageInfo type MsgUpdateRateLimit struct { // authority is the address that controls the module (defaults to x/gov unless // overwritten). - Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty" yaml:"authority"` - Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` - ChannelID string `protobuf:"bytes,3,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` - MaxPercentSend github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=max_percent_send,json=maxPercentSend,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"max_percent_send"` - MaxPercentRecv github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,5,opt,name=max_percent_recv,json=maxPercentRecv,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"max_percent_recv"` - MinRateLimitAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,6,opt,name=min_rate_limit_amount,json=minRateLimitAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"min_rate_limit_amount"` - DurationHours uint64 `protobuf:"varint,7,opt,name=duration_hours,json=durationHours,proto3" json:"duration_hours,omitempty"` + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty" yaml:"authority"` + Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` + ChannelID string `protobuf:"bytes,3,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` + MaxPercentSend cosmossdk_io_math.Int `protobuf:"bytes,4,opt,name=max_percent_send,json=maxPercentSend,proto3,customtype=cosmossdk.io/math.Int" json:"max_percent_send"` + MaxPercentRecv cosmossdk_io_math.Int `protobuf:"bytes,5,opt,name=max_percent_recv,json=maxPercentRecv,proto3,customtype=cosmossdk.io/math.Int" json:"max_percent_recv"` + MinRateLimitAmount cosmossdk_io_math.Int `protobuf:"bytes,6,opt,name=min_rate_limit_amount,json=minRateLimitAmount,proto3,customtype=cosmossdk.io/math.Int" json:"min_rate_limit_amount"` + DurationHours uint64 `protobuf:"varint,7,opt,name=duration_hours,json=durationHours,proto3" json:"duration_hours,omitempty"` } func (m *MsgUpdateRateLimit) Reset() { *m = MsgUpdateRateLimit{} } @@ -466,45 +466,44 @@ func init() { } var fileDescriptor_7c4a582edd75a41c = []byte{ - // 594 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x96, 0x4f, 0x6b, 0x13, 0x4f, - 0x18, 0xc7, 0xb3, 0xbf, 0xa4, 0x29, 0x19, 0x68, 0x7e, 0xed, 0x10, 0xcd, 0x76, 0x2d, 0x9b, 0x12, - 0xa8, 0x14, 0xb5, 0xbb, 0xa6, 0x22, 0x4a, 0x6f, 0xa9, 0x1e, 0x0c, 0x18, 0x90, 0x55, 0x41, 0xbc, - 0x2c, 0x93, 0x9d, 0x71, 0xb3, 0x98, 0x99, 0x59, 0x76, 0x26, 0x21, 0x01, 0x4f, 0x05, 0xef, 0x1e, - 0x05, 0x7d, 0x11, 0xbe, 0x8c, 0x1e, 0x7b, 0x53, 0x7a, 0x08, 0x92, 0x1c, 0xbc, 0xfb, 0x0a, 0x64, - 0x77, 0xf3, 0xa7, 0x66, 0x1b, 0x6d, 0xa2, 0xa0, 0x07, 0x4f, 0x93, 0xcc, 0xf3, 0x7d, 0xbe, 0x7c, - 0x87, 0xcf, 0xb3, 0xb3, 0x0b, 0x76, 0x1c, 0x4e, 0x7d, 0x2e, 0x50, 0xa3, 0x45, 0xcc, 0x00, 0x49, - 0xd2, 0xf2, 0xa8, 0x27, 0xcd, 0x4e, 0xa5, 0x41, 0x24, 0xaa, 0x98, 0xb2, 0x6b, 0xf8, 0x01, 0x97, - 0x1c, 0x6e, 0x4d, 0x65, 0xc6, 0x44, 0x66, 0x8c, 0x64, 0x5a, 0xc1, 0xe5, 0x2e, 0x8f, 0x84, 0x66, - 0xf8, 0x2b, 0xee, 0xd1, 0x8a, 0x0e, 0x17, 0x94, 0x0b, 0x93, 0x0a, 0xd7, 0xec, 0x54, 0xc2, 0x25, - 0x2e, 0x94, 0x3f, 0xa6, 0xc1, 0xff, 0x75, 0xe1, 0x56, 0x31, 0xb6, 0x90, 0x24, 0x0f, 0x43, 0x2b, - 0xb8, 0x0f, 0x72, 0xa8, 0x2d, 0x9b, 0x3c, 0xf0, 0x64, 0x4f, 0x55, 0xb6, 0x95, 0xdd, 0xdc, 0x61, - 0xe1, 0x6b, 0xbf, 0xb4, 0xde, 0x43, 0xb4, 0x75, 0x50, 0x9e, 0x94, 0xca, 0xd6, 0x54, 0x06, 0x0b, - 0x60, 0x05, 0x13, 0xc6, 0xa9, 0xfa, 0x5f, 0xa8, 0xb7, 0xe2, 0x3f, 0xf0, 0x06, 0x00, 0x4e, 0x13, - 0x31, 0x46, 0x5a, 0xb6, 0x87, 0xd5, 0x74, 0x64, 0xb5, 0x36, 0xe8, 0x97, 0x72, 0xf7, 0xe2, 0xdd, - 0xda, 0x7d, 0x2b, 0x37, 0x12, 0xd4, 0x30, 0x7c, 0x06, 0xd6, 0x29, 0xea, 0xda, 0x3e, 0x09, 0x1c, - 0xc2, 0xa4, 0x2d, 0x08, 0xc3, 0x6a, 0x26, 0xea, 0x31, 0x8e, 0xfb, 0xa5, 0xd4, 0x69, 0xbf, 0x74, - 0xd5, 0xf5, 0x64, 0xb3, 0xdd, 0x30, 0x1c, 0x4e, 0xcd, 0xd1, 0x89, 0xe2, 0x65, 0x4f, 0xe0, 0x97, - 0xa6, 0xec, 0xf9, 0x44, 0x18, 0x35, 0x26, 0xad, 0x3c, 0x45, 0xdd, 0x47, 0xb1, 0xcd, 0x63, 0xc2, - 0x12, 0xce, 0x01, 0x71, 0x3a, 0xea, 0xca, 0xaf, 0x3a, 0x5b, 0xc4, 0xe9, 0xc0, 0x1d, 0x90, 0xc7, - 0xed, 0x00, 0x49, 0x8f, 0x33, 0xbb, 0xc9, 0xdb, 0x81, 0x50, 0xb3, 0xdb, 0xca, 0x6e, 0xc6, 0x5a, - 0x1b, 0xef, 0x3e, 0x08, 0x37, 0x21, 0x02, 0x97, 0xa8, 0xc7, 0xec, 0x10, 0x97, 0x1d, 0xf1, 0xb2, - 0x11, 0xe5, 0x6d, 0x26, 0xd5, 0xd5, 0xa5, 0x52, 0x40, 0xea, 0xb1, 0x09, 0xaf, 0x6a, 0xe4, 0x74, - 0x90, 0x3f, 0xfa, 0xf2, 0xe1, 0xda, 0x94, 0x48, 0x79, 0x13, 0x14, 0x67, 0xc0, 0x5a, 0x44, 0xf8, - 0x9c, 0x09, 0x52, 0x3e, 0x4d, 0x03, 0x58, 0x17, 0xee, 0x53, 0x1f, 0x23, 0x49, 0xfe, 0x71, 0x5f, - 0x86, 0xfb, 0x5c, 0xa0, 0xd9, 0xdf, 0x05, 0xf4, 0x9c, 0xd1, 0x5a, 0x3d, 0x67, 0xb4, 0x12, 0xdc, - 0xb7, 0x80, 0x96, 0x64, 0x3b, 0x41, 0xff, 0x5e, 0x89, 0xd0, 0x5b, 0x84, 0xf2, 0xce, 0x9f, 0x47, - 0x3f, 0x27, 0xfc, 0x4c, 0xba, 0x49, 0xf8, 0x77, 0x0a, 0xd8, 0x88, 0xca, 0x82, 0xc8, 0xbf, 0x2f, - 0xfb, 0x15, 0xb0, 0x99, 0x08, 0x37, 0x8e, 0xbe, 0xff, 0x36, 0x03, 0xd2, 0x75, 0xe1, 0xc2, 0x57, - 0xa0, 0x50, 0xc5, 0xf8, 0x49, 0x80, 0x98, 0x78, 0x41, 0x82, 0xe9, 0x21, 0xf6, 0x8c, 0x1f, 0xdd, - 0xea, 0xc6, 0xcc, 0x93, 0xac, 0xdd, 0x5e, 0x48, 0x3e, 0x4e, 0x01, 0x5f, 0x2b, 0xa0, 0x18, 0x4f, - 0x46, 0x32, 0xc1, 0xcd, 0x9f, 0x5a, 0xce, 0xcc, 0x94, 0x76, 0x77, 0xd1, 0x8e, 0xef, 0x72, 0xc4, - 0x90, 0x97, 0xc9, 0x31, 0x33, 0x1e, 0x17, 0xc8, 0x31, 0x67, 0xa0, 0xe0, 0x91, 0x02, 0x2e, 0x47, - 0xc0, 0x92, 0x31, 0xcc, 0x0b, 0x98, 0x9e, 0x25, 0xad, 0xdd, 0x59, 0xb0, 0x61, 0x1c, 0xe2, 0xf0, - 0xfa, 0xf1, 0x40, 0x57, 0x4e, 0x06, 0xba, 0xf2, 0x79, 0xa0, 0x2b, 0x6f, 0x86, 0x7a, 0xea, 0x64, - 0xa8, 0xa7, 0x3e, 0x0d, 0xf5, 0xd4, 0xf3, 0x8d, 0xee, 0x99, 0xef, 0x80, 0xe8, 0xb2, 0x68, 0x64, - 0xa3, 0xd7, 0xf6, 0xad, 0x6f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x79, 0x45, 0x81, 0x07, 0x2c, 0x08, - 0x00, 0x00, + // 585 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x95, 0x3f, 0x6f, 0xd3, 0x40, + 0x18, 0xc6, 0x63, 0xd2, 0xa6, 0xca, 0x49, 0x0d, 0xed, 0x29, 0x25, 0xae, 0x29, 0x4e, 0x15, 0xa9, + 0x52, 0xc5, 0x1f, 0x9b, 0x14, 0x21, 0x50, 0xb7, 0x14, 0x24, 0x88, 0x44, 0xa4, 0xca, 0xc0, 0xc2, + 0x62, 0x5d, 0x7c, 0x87, 0x63, 0x91, 0xbb, 0xb3, 0x7c, 0x97, 0x28, 0x91, 0x98, 0x2a, 0xb1, 0x33, + 0x22, 0xc1, 0x88, 0xc4, 0xca, 0xc7, 0xe8, 0xd8, 0x11, 0x31, 0x44, 0x28, 0x19, 0xd8, 0xf9, 0x04, + 0xc8, 0x76, 0x93, 0x14, 0xbb, 0x81, 0xa4, 0x0b, 0x0c, 0x4c, 0xb6, 0xef, 0x9e, 0xf7, 0xf5, 0x73, + 0xf7, 0x7b, 0xec, 0x03, 0x3b, 0x0e, 0xa7, 0x3e, 0x17, 0xa8, 0xd9, 0x26, 0x66, 0x80, 0x24, 0x69, + 0x7b, 0xd4, 0x93, 0x66, 0xb7, 0xda, 0x24, 0x12, 0x55, 0x4d, 0xd9, 0x33, 0xfc, 0x80, 0x4b, 0x0e, + 0xb7, 0xa6, 0x32, 0x63, 0x22, 0x33, 0x4e, 0x65, 0x5a, 0xd1, 0xe5, 0x2e, 0x8f, 0x84, 0x66, 0x78, + 0x17, 0xd7, 0x68, 0x25, 0x87, 0x0b, 0xca, 0x85, 0x49, 0x85, 0x6b, 0x76, 0xab, 0xe1, 0x25, 0x9e, + 0xa8, 0x7c, 0xcc, 0x82, 0xcb, 0x0d, 0xe1, 0xd6, 0x30, 0xb6, 0x90, 0x24, 0x4f, 0xc2, 0x56, 0x70, + 0x0f, 0xe4, 0x51, 0x47, 0xb6, 0x78, 0xe0, 0xc9, 0xbe, 0xaa, 0x6c, 0x2b, 0xbb, 0xf9, 0x83, 0xe2, + 0x8f, 0x41, 0x79, 0xad, 0x8f, 0x68, 0x7b, 0xbf, 0x32, 0x99, 0xaa, 0x58, 0x53, 0x19, 0x2c, 0x82, + 0x65, 0x4c, 0x18, 0xa7, 0xea, 0xa5, 0x50, 0x6f, 0xc5, 0x0f, 0xf0, 0x26, 0x00, 0x4e, 0x0b, 0x31, + 0x46, 0xda, 0xb6, 0x87, 0xd5, 0x6c, 0xd4, 0x6a, 0x75, 0x38, 0x28, 0xe7, 0x1f, 0xc4, 0xa3, 0xf5, + 0x87, 0x56, 0xfe, 0x54, 0x50, 0xc7, 0xf0, 0x11, 0x58, 0xa3, 0xa8, 0x67, 0xfb, 0x24, 0x70, 0x08, + 0x93, 0xb6, 0x20, 0x0c, 0xab, 0x4b, 0x51, 0xcd, 0xb5, 0xe3, 0x41, 0x39, 0xf3, 0x75, 0x50, 0xde, + 0x88, 0x97, 0x21, 0xf0, 0x2b, 0xc3, 0xe3, 0x26, 0x45, 0xb2, 0x65, 0xd4, 0x99, 0xb4, 0x0a, 0x14, + 0xf5, 0x0e, 0xe3, 0xaa, 0xa7, 0x84, 0xa5, 0x1a, 0x05, 0xc4, 0xe9, 0xaa, 0xcb, 0x0b, 0x36, 0xb2, + 0x88, 0xd3, 0x85, 0x3b, 0xa0, 0x80, 0x3b, 0x01, 0x92, 0x1e, 0x67, 0x76, 0x8b, 0x77, 0x02, 0xa1, + 0xe6, 0xb6, 0x95, 0xdd, 0x25, 0x6b, 0x75, 0x3c, 0xfa, 0x38, 0x1c, 0x84, 0x87, 0x60, 0x83, 0x7a, + 0xcc, 0x0e, 0x61, 0xd8, 0x11, 0x0d, 0x1b, 0x51, 0xde, 0x61, 0x52, 0x5d, 0x99, 0xe7, 0xa5, 0x90, + 0x7a, 0x6c, 0xb2, 0xf9, 0xb5, 0xa8, 0x70, 0xbf, 0x70, 0xf4, 0xfd, 0xf3, 0xf5, 0xe9, 0xf6, 0x56, + 0x36, 0x41, 0x29, 0x41, 0xc9, 0x22, 0xc2, 0xe7, 0x4c, 0x90, 0xca, 0xa7, 0x2c, 0x80, 0x0d, 0xe1, + 0x3e, 0xf7, 0x31, 0x92, 0xe4, 0x3f, 0xc4, 0x34, 0xc4, 0x99, 0x74, 0x72, 0x17, 0xa4, 0x73, 0x4e, + 0x2c, 0x56, 0xce, 0x89, 0x45, 0x0a, 0xe2, 0x16, 0xd0, 0xd2, 0xa0, 0x26, 0x1c, 0x3f, 0x28, 0x11, + 0x47, 0x8b, 0x50, 0xde, 0xfd, 0xfb, 0x1c, 0x67, 0x98, 0x4f, 0xb8, 0x9b, 0x98, 0x7f, 0xaf, 0x80, + 0xf5, 0x68, 0x5a, 0x10, 0xf9, 0xef, 0x79, 0xbf, 0x0a, 0x36, 0x53, 0xe6, 0xc6, 0xd6, 0xf7, 0xde, + 0x2d, 0x81, 0x6c, 0x43, 0xb8, 0xf0, 0x35, 0x28, 0xd6, 0x30, 0x7e, 0x16, 0x20, 0x26, 0x5e, 0x92, + 0x60, 0xba, 0x88, 0x5b, 0xc6, 0xef, 0xfe, 0xb7, 0x46, 0xe2, 0xb3, 0xd4, 0xee, 0x2e, 0x24, 0x1f, + 0xbb, 0x80, 0x6f, 0x14, 0x50, 0x8a, 0x93, 0x91, 0x76, 0x70, 0xfb, 0x8f, 0x2d, 0x13, 0x99, 0xd2, + 0xee, 0x2f, 0x5a, 0xf1, 0x8b, 0x8f, 0x18, 0xf2, 0x45, 0x7c, 0x24, 0xe2, 0x31, 0x87, 0x8f, 0x19, + 0x81, 0x82, 0x47, 0x0a, 0xb8, 0x12, 0x01, 0x4b, 0xdb, 0x30, 0xe7, 0x68, 0x7a, 0x96, 0xb4, 0x76, + 0x6f, 0xc1, 0x82, 0xb1, 0x89, 0x83, 0x1b, 0xc7, 0x43, 0x5d, 0x39, 0x19, 0xea, 0xca, 0xb7, 0xa1, + 0xae, 0xbc, 0x1d, 0xe9, 0x99, 0x93, 0x91, 0x9e, 0xf9, 0x32, 0xd2, 0x33, 0x2f, 0xd6, 0x7b, 0x67, + 0x4e, 0x68, 0xd9, 0xf7, 0x89, 0x68, 0xe6, 0xa2, 0x03, 0xf5, 0xce, 0xcf, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x70, 0x20, 0xb8, 0x09, 0xc6, 0x07, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/stakingmiddleware/keeper/keeper.go b/x/stakingmiddleware/keeper/keeper.go index 4580cb017..f1bbc0da6 100644 --- a/x/stakingmiddleware/keeper/keeper.go +++ b/x/stakingmiddleware/keeper/keeper.go @@ -3,11 +3,11 @@ package keeper import ( "fmt" - "github.com/cometbft/cometbft/libs/log" + "cosmossdk.io/log" "github.com/notional-labs/composable/v6/x/stakingmiddleware/types" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/x/stakingmiddleware/module.go b/x/stakingmiddleware/module.go index 4c656f6ce..8bdb338ce 100644 --- a/x/stakingmiddleware/module.go +++ b/x/stakingmiddleware/module.go @@ -103,6 +103,12 @@ func (AppModule) Name() string { return types.ModuleName } +// IsAppModule implements module.AppModule. +func (AppModule) IsAppModule() {} + +// IsOnePerModuleType implements module.AppModule. +func (AppModule) IsOnePerModuleType() {} + // RegisterInvariants registers the staking middleware module invariants. func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} @@ -133,11 +139,6 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw // ConsensusVersion implements AppModule/ConsensusVersion. func (AppModule) ConsensusVersion() uint64 { return 1 } -// BeginBlock returns the begin blocker for the staking middleware module. -func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) { - // BeginBlocker(ctx, am.keeper) ??? -} - // AppModuleSimulation functions // GenerateGenesisState creates a randomized GenState of the staking middleware module. func (AppModule) GenerateGenesisState(simState *module.SimulationState) {} @@ -148,7 +149,7 @@ func (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedP } // RegisterStoreDecoder registers a decoder for staking middleware module's types. -func (am AppModule) RegisterStoreDecoder(_ sdk.StoreDecoderRegistry) {} +func (am AppModule) RegisterStoreDecoder(registry simtypes.StoreDecoderRegistry) {} // WeightedOperations doesn't return any staking middleware module operation. func (AppModule) WeightedOperations(_ module.SimulationState) []simtypes.WeightedOperation { diff --git a/x/stakingmiddleware/types/codec.go b/x/stakingmiddleware/types/codec.go index c8986807f..5452fd0a2 100644 --- a/x/stakingmiddleware/types/codec.go +++ b/x/stakingmiddleware/types/codec.go @@ -6,9 +6,6 @@ import ( codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" "github.com/cosmos/cosmos-sdk/types/msgservice" - authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec" - govcodec "github.com/cosmos/cosmos-sdk/x/gov/codec" - groupcodec "github.com/cosmos/cosmos-sdk/x/group/codec" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -39,7 +36,7 @@ func init() { // Register all Amino interfaces and concrete types on the authz and gov Amino codec so that this can later be // used to properly serialize MsgGrant, MsgExec and MsgSubmitProposal instances - RegisterLegacyAminoCodec(authzcodec.Amino) - RegisterLegacyAminoCodec(govcodec.Amino) - RegisterLegacyAminoCodec(groupcodec.Amino) + // RegisterLegacyAminoCodec(authzcodec.Amino) + // RegisterLegacyAminoCodec(govcodec.Amino) + // RegisterLegacyAminoCodec(groupcodec.Amino) } diff --git a/x/transfermiddleware/ibc_ante_test.go b/x/transfermiddleware/ibc_ante_test.go index 5c6770de0..5eae07b96 100644 --- a/x/transfermiddleware/ibc_ante_test.go +++ b/x/transfermiddleware/ibc_ante_test.go @@ -5,11 +5,12 @@ import ( "os" "testing" + storetypes "cosmossdk.io/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - "github.com/cosmos/ibc-go/v7/modules/core/exported" - wasmkeeper "github.com/cosmos/ibc-go/v7/modules/light-clients/08-wasm/keeper" - wasmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/08-wasm/types" + wasmkeeper "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/keeper" + wasmtypes "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + "github.com/cosmos/ibc-go/v8/modules/core/exported" "github.com/stretchr/testify/suite" customibctesting "github.com/notional-labs/composable/v6/app/ibctesting" @@ -27,7 +28,7 @@ type TransferTestSuite struct { chainB *customibctesting.TestChain ctx sdk.Context - store sdk.KVStore + store storetypes.KVStore testData map[string]string wasmKeeper wasmkeeper.Keeper @@ -35,8 +36,8 @@ type TransferTestSuite struct { func (suite *TransferTestSuite) SetupTest() { suite.coordinator = customibctesting.NewCoordinator(suite.T(), 2) - suite.chainA = suite.coordinator.GetChain(customibctesting.GetChainID(0)) - suite.chainB = suite.coordinator.GetChain(customibctesting.GetChainID(1)) + suite.chainA = suite.coordinator.GetChain(customibctesting.GetChainID(1)) + suite.chainB = suite.coordinator.GetChain(customibctesting.GetChainID(2)) suite.chainB.SetWasm(true) suite.coordinator.CommitNBlocks(suite.chainA, 2) @@ -47,21 +48,21 @@ func (suite *TransferTestSuite) SetupTest() { err = json.Unmarshal(data, &suite.testData) suite.Require().NoError(err) - suite.ctx = suite.chainB.GetContext().WithBlockGasMeter(sdk.NewInfiniteGasMeter()) + suite.ctx = suite.chainB.GetContext().WithBlockGasMeter(storetypes.NewInfiniteGasMeter()) suite.store = suite.chainB.App.GetIBCKeeper().ClientKeeper.ClientStore(suite.ctx, "08-wasm-0") wasmContract, err := os.ReadFile("../../contracts/ics10_grandpa_cw.wasm") suite.Require().NoError(err) - suite.wasmKeeper = suite.chainB.GetTestSupport().Wasm08Keeper() + suite.wasmKeeper = suite.chainB.Wasm08Keeper() - msg := wasmtypes.NewMsgPushNewWasmCode(govAuthorityAddress, wasmContract) + msg := wasmtypes.NewMsgStoreCode(govAuthorityAddress, wasmContract) - response, err := suite.wasmKeeper.PushNewWasmCode(suite.ctx, msg) + response, err := suite.wasmKeeper.StoreCode(suite.ctx, msg) suite.Require().NoError(err) - suite.Require().NotNil(response.CodeId) - suite.coordinator.CodeID = response.CodeId + suite.Require().NotNil(response.Checksum) + suite.coordinator.CodeID = response.Checksum } func TestTransferTestSuite(t *testing.T) { @@ -98,7 +99,7 @@ func (suite *TransferTestSuite) TestIbcAnteWithTenderMintUpdateClient() { // ensure counterparty has committed state suite.chainA.Coordinator.CommitBlock(suite.chainA) - header := suite.chainA.CurrentTMClientHeader() + header, _ := suite.chainA.ConstructUpdateTMClientHeader(path.EndpointA.Chain, path.EndpointB.ClientID) msg, err := clienttypes.NewMsgUpdateClient( path.EndpointB.ClientID, header, diff --git a/x/transfermiddleware/ibc_middleware.go b/x/transfermiddleware/ibc_middleware.go index 875bfbc5c..ebfddf100 100644 --- a/x/transfermiddleware/ibc_middleware.go +++ b/x/transfermiddleware/ibc_middleware.go @@ -4,12 +4,12 @@ import ( "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" "github.com/notional-labs/composable/v6/x/transfermiddleware/keeper" ) diff --git a/x/transfermiddleware/keeper/genesis.go b/x/transfermiddleware/keeper/genesis.go index 6a4615b7e..677ecc496 100644 --- a/x/transfermiddleware/keeper/genesis.go +++ b/x/transfermiddleware/keeper/genesis.go @@ -1,6 +1,7 @@ package keeper import ( + storetypes "cosmossdk.io/store/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/notional-labs/composable/v6/x/transfermiddleware/types" @@ -19,7 +20,7 @@ func (k Keeper) InitGenesis(ctx sdk.Context, genState types.GenesisState) { func (k Keeper) IterateParaTokenInfos(ctx sdk.Context, fn func(index int64, info types.ParachainIBCTokenInfo) (stop bool)) { store := ctx.KVStore(k.storeKey) - iterator := sdk.KVStorePrefixIterator(store, types.KeyParachainIBCTokenInfoByAssetID) + iterator := storetypes.KVStorePrefixIterator(store, types.KeyParachainIBCTokenInfoByAssetID) defer iterator.Close() i := int64(0) diff --git a/x/transfermiddleware/keeper/grpc_query.go b/x/transfermiddleware/keeper/grpc_query.go index dbf461a9b..d1269603e 100644 --- a/x/transfermiddleware/keeper/grpc_query.go +++ b/x/transfermiddleware/keeper/grpc_query.go @@ -3,10 +3,10 @@ package keeper import ( "context" - "github.com/cosmos/cosmos-sdk/store/prefix" + "cosmossdk.io/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" sdkquery "github.com/cosmos/cosmos-sdk/types/query" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" "github.com/notional-labs/composable/v6/x/transfermiddleware/types" ) diff --git a/x/transfermiddleware/keeper/ics4wrapper.go b/x/transfermiddleware/keeper/ics4wrapper.go index 14dd2e898..6487b8841 100644 --- a/x/transfermiddleware/keeper/ics4wrapper.go +++ b/x/transfermiddleware/keeper/ics4wrapper.go @@ -4,13 +4,14 @@ import ( "fmt" "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" "github.com/notional-labs/composable/v6/x/transfermiddleware/types" ) @@ -43,7 +44,7 @@ func (keeper Keeper) handleOverrideSendPacketTransferLogic( parachainInfo := keeper.GetParachainIBCTokenInfoByNativeDenom(ctx, fungibleTokenPacketData.Denom) // burn native token in escrow address - transferAmount, ok := sdk.NewIntFromString(fungibleTokenPacketData.Amount) + transferAmount, ok := sdkmath.NewIntFromString(fungibleTokenPacketData.Amount) // TODO: remove this panic and replace by err hanlde if !ok { @@ -59,7 +60,10 @@ func (keeper Keeper) handleOverrideSendPacketTransferLogic( } // burn native token // Get Coin from excrow address - keeper.bankKeeper.BurnCoins(ctx, transfertypes.ModuleName, sdk.NewCoins(nativeTransferToken)) + err = keeper.bankKeeper.BurnCoins(ctx, transfertypes.ModuleName, sdk.NewCoins(nativeTransferToken)) + if err != nil { + panic(err) + } // release lock IBC token and send it to sender // TODO: should we use a module address for this ? @@ -164,7 +168,7 @@ func (keeper Keeper) refundToken(ctx sdk.Context, packet channeltypes.Packet, da // parse the denomination from the full denom path trace := transfertypes.ParseDenomTrace(data.Denom) // parse the transfer amount - transferAmount, ok := sdk.NewIntFromString(data.Amount) + transferAmount, ok := sdkmath.NewIntFromString(data.Amount) if !ok { return errors.Wrapf(transfertypes.ErrInvalidAmount, "unable to parse transfer amount (%s) into math.Int", data.Amount) } diff --git a/x/transfermiddleware/keeper/keeper.go b/x/transfermiddleware/keeper/keeper.go index 005b593ea..fd369e8f7 100644 --- a/x/transfermiddleware/keeper/keeper.go +++ b/x/transfermiddleware/keeper/keeper.go @@ -4,16 +4,16 @@ import ( "time" errorsmod "cosmossdk.io/errors" - "github.com/cometbft/cometbft/libs/log" + "cosmossdk.io/log" + "cosmossdk.io/store/prefix" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/store/prefix" - storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - "github.com/cosmos/ibc-go/v7/modules/core/exported" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" + "github.com/cosmos/ibc-go/v8/modules/core/exported" ibctransfermiddleware "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/keeper" "github.com/notional-labs/composable/v6/x/transfermiddleware/types" @@ -121,7 +121,7 @@ func (keeper Keeper) AddParachainIBCInfoToRemoveList(ctx sdk.Context, nativeDeno // IterateRemoveListInfo iterate all parachain token in remove list. func (keeper Keeper) IterateRemoveListInfo(ctx sdk.Context, cb func(removeInfo types.RemoveParachainIBCTokenInfo) (stop bool)) { store := ctx.KVStore(keeper.storeKey) - iterator := sdk.KVStorePrefixIterator(store, types.KeyParachainIBCTokenRemoveListByNativeDenom) + iterator := storetypes.KVStorePrefixIterator(store, types.KeyParachainIBCTokenRemoveListByNativeDenom) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { @@ -173,7 +173,7 @@ func (keeper Keeper) HasAllowRlyAddress(ctx sdk.Context, rlyAddress string) bool func (keeper Keeper) IterateAllowRlyAddress(ctx sdk.Context, cb func(rlyAddress string) (stop bool)) { store := ctx.KVStore(keeper.storeKey) prefixStore := prefix.NewStore(store, types.KeyRlyAddress) - iterator := sdk.KVStorePrefixIterator(prefixStore, nil) + iterator := storetypes.KVStorePrefixIterator(prefixStore, nil) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { diff --git a/x/transfermiddleware/keeper/relay.go b/x/transfermiddleware/keeper/relay.go index 35cf2ed90..7143c34e9 100644 --- a/x/transfermiddleware/keeper/relay.go +++ b/x/transfermiddleware/keeper/relay.go @@ -2,9 +2,10 @@ package keeper import ( errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" "github.com/notional-labs/composable/v6/x/transfermiddleware/types" ) @@ -17,7 +18,7 @@ func (k Keeper) OnRecvPacket(ctx sdk.Context, packet channeltypes.Packet, data t } // parse the transfer amount - transferAmount, ok := sdk.NewIntFromString(data.Amount) + transferAmount, ok := sdkmath.NewIntFromString(data.Amount) if !ok { return errorsmod.Wrapf(transfertypes.ErrInvalidAmount, "unable to parse transfer amount: %s", data.Amount) } diff --git a/x/transfermiddleware/module.go b/x/transfermiddleware/module.go index 1f64a2b79..f02a7926b 100644 --- a/x/transfermiddleware/module.go +++ b/x/transfermiddleware/module.go @@ -75,6 +75,12 @@ type AppModule struct { keeper *keeper.Keeper } +// IsAppModule implements module.AppModule. +func (AppModule) IsAppModule() {} + +// IsOnePerModuleType implements module.AppModule. +func (AppModule) IsOnePerModuleType() {} + // NewAppModule creates a new router module func NewAppModule(k *keeper.Keeper) AppModule { return AppModule{ @@ -123,28 +129,18 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw // ConsensusVersion implements AppModule/ConsensusVersion. func (AppModule) ConsensusVersion() uint64 { return 1 } -// BeginBlock implements the AppModule interface -func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) { - am.keeper.BeginBlocker(ctx) -} - -// EndBlock implements the AppModule interface -func (am AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - return []abci.ValidatorUpdate{} -} - // AppModuleSimulation functions // GenerateGenesisState creates a randomized GenState of the router module. func (AppModule) GenerateGenesisState(_ *module.SimulationState) {} // ProposalContents doesn't return any content functions for governance proposals. -func (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedProposalContent { //nolint:staticcheck // WeightedProposalContent is necessary to satisfy the module interface +func (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedProposalContent { return nil } // RegisterStoreDecoder registers a decoder for router module's types -func (am AppModule) RegisterStoreDecoder(_ sdk.StoreDecoderRegistry) {} +func (am AppModule) RegisterStoreDecoder(registry simtypes.StoreDecoderRegistry) {} // WeightedOperations returns the all the router module operations with their respective weights. func (am AppModule) WeightedOperations(_ module.SimulationState) []simtypes.WeightedOperation { diff --git a/x/transfermiddleware/pfm_test.go b/x/transfermiddleware/pfm_test.go index ce9eb675d..e28d476c9 100644 --- a/x/transfermiddleware/pfm_test.go +++ b/x/transfermiddleware/pfm_test.go @@ -6,14 +6,14 @@ import ( "testing" "time" + sdkmath "cosmossdk.io/math" "github.com/cometbft/cometbft/crypto" "github.com/cometbft/cometbft/crypto/ed25519" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - "github.com/stretchr/testify/suite" - + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" customibctesting "github.com/notional-labs/composable/v6/app/ibctesting" + "github.com/stretchr/testify/suite" ) type PacketMetadata struct { @@ -89,7 +89,7 @@ func RandomBech32AccountAddress(tb testing.TB) string { func (suite *TransferMiddlewareTestSuite) TestTransferWithPFM_ErrorAck() { var ( - transferAmount = sdk.NewInt(1000000000) + transferAmount = sdkmath.NewInt(1000000000) timeoutHeight = clienttypes.NewHeight(1, 110) pathAtoB *customibctesting.Path pathBtoC *customibctesting.Path @@ -115,13 +115,13 @@ func (suite *TransferMiddlewareTestSuite) TestTransferWithPFM_ErrorAck() { } // set send params - suite.chainC.GetTestSupport().TransferKeeper().SetParams(suite.chainC.GetContext(), params) + suite.chainC.App.GetTransferKeeper().SetParams(suite.chainC.GetContext(), params) senderAOriginalBalance := suite.chainA.AllBalances(suite.chainA.SenderAccount.GetAddress()) testAcc := RandomAccountAddress(suite.T()) timeOut := 10 * time.Minute retries := uint8(0) - // Build MEMOtransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + // Build MEMOtransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" memo := PacketMetadata{ Forward: &ForwardMetadata{ Receiver: testAcc.String(), @@ -234,7 +234,7 @@ func (suite *TransferMiddlewareTestSuite) TestTransferWithPFM_ErrorAck() { func (suite *TransferMiddlewareTestSuite) TestTransferWithPFM() { var ( - transferAmount = sdk.NewInt(1000000000) + transferAmount = sdkmath.NewInt(1000000000) // when transfer via sdk transfer from A (module) -> B (contract) timeoutHeight = clienttypes.NewHeight(1, 110) pathAtoB *customibctesting.Path @@ -388,7 +388,7 @@ func (suite *TransferMiddlewareTestSuite) TestTransferWithPFM() { func (suite *TransferMiddlewareTestSuite) TestTransferWithPFMReverse_ErrorAck() { var ( - transferAmount = sdk.NewInt(1000000000) + transferAmount = sdkmath.NewInt(1000000000) // when transfer via sdk transfer from A (module) -> B (contract) timeoutHeight = clienttypes.NewHeight(1, 110) pathAtoB *customibctesting.Path @@ -430,7 +430,7 @@ func (suite *TransferMiddlewareTestSuite) TestTransferWithPFMReverse_ErrorAck() ReceiveEnabled: false, } // set send params - suite.chainA.GetTestSupport().TransferKeeper().SetParams(suite.chainA.GetContext(), params) + suite.chainA.App.GetTransferKeeper().SetParams(suite.chainA.GetContext(), params) timeOut := 10 * time.Minute retries := uint8(0) @@ -660,7 +660,7 @@ func (suite *TransferMiddlewareTestSuite) TestTransferWithPFMReverse_ErrorAck() func (suite *TransferMiddlewareTestSuite) TestTransferWithPFMReverse() { var ( - transferAmount = sdk.NewInt(1000000000) + transferAmount = sdkmath.NewInt(1000000000) // when transfer via sdk transfer from A (module) -> B (contract) timeoutHeight = clienttypes.NewHeight(1, 110) pathAtoB *customibctesting.Path diff --git a/x/transfermiddleware/relay_test.go b/x/transfermiddleware/relay_test.go index 6bf804ad9..60ae6fec4 100644 --- a/x/transfermiddleware/relay_test.go +++ b/x/transfermiddleware/relay_test.go @@ -5,9 +5,10 @@ import ( "testing" "time" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" "github.com/stretchr/testify/suite" customibctesting "github.com/notional-labs/composable/v6/app/ibctesting" @@ -16,7 +17,7 @@ import ( // TODO: use testsuite here. func (suite *TransferMiddlewareTestSuite) TestOnrecvPacket() { var ( - transferAmount = sdk.NewInt(1000000000) + transferAmount = sdkmath.NewInt(1000000000) // when transfer via sdk transfer from A (module) -> B (contract) coinToSendToB = sdk.NewCoin(sdk.DefaultBondDenom, transferAmount) timeoutHeight = clienttypes.NewHeight(1, 110) @@ -97,7 +98,7 @@ func (suite *TransferMiddlewareTestSuite) TestOnrecvPacket() { // TODO: use testsuite here. func (suite *TransferMiddlewareTestSuite) TestSendPacket() { var ( - transferAmount = sdk.NewInt(1000000000) + transferAmount = sdkmath.NewInt(1000000000) // when transfer via sdk transfer from A (module) -> B (contract) nativeTokenSendOnChainA = sdk.NewCoin(sdk.DefaultBondDenom, transferAmount) nativeTokenReceiveOnChainB = sdk.NewCoin("ppica", transferAmount) @@ -180,7 +181,7 @@ func (suite *TransferMiddlewareTestSuite) TestSendPacket() { // TODO: use testsuite here. func (suite *TransferMiddlewareTestSuite) TestTimeOutPacket() { var ( - transferAmount = sdk.NewInt(1000000000) + transferAmount = sdkmath.NewInt(1000000000) // when transfer via sdk transfer from A (module) -> B (contract) nativeToken = sdk.NewCoin(sdk.DefaultBondDenom, transferAmount) timeoutHeight = clienttypes.NewHeight(1, 110) @@ -262,8 +263,8 @@ func (suite *TransferMiddlewareTestSuite) TestMintAndEscrowProcessWhenLaunchChai timeoutHeight = clienttypes.NewHeight(1, 110) path *customibctesting.Path expDenom = "ibc/C053D637CCA2A2BA030E2C5EE1B28A16F71CCB0E45E8BE52766DC1B241B77878" - transferAmountFromChainBToChainA = sdk.NewInt(100000000000000) - transferAmountFromChainAToChainB = sdk.NewInt(1000000000000) + transferAmountFromChainBToChainA = sdkmath.NewInt(100000000000000) + transferAmountFromChainAToChainB = sdkmath.NewInt(1000000000000) // pathBtoC = NewTransferPath(suite.chainB, suite.chainC) ) diff --git a/x/transfermiddleware/types/codec.go b/x/transfermiddleware/types/codec.go index 523049256..f0ac97cd2 100644 --- a/x/transfermiddleware/types/codec.go +++ b/x/transfermiddleware/types/codec.go @@ -6,9 +6,9 @@ import ( codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" "github.com/cosmos/cosmos-sdk/types/msgservice" - authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec" - govcodec "github.com/cosmos/cosmos-sdk/x/gov/codec" - groupcodec "github.com/cosmos/cosmos-sdk/x/group/codec" + + // govcodec "github.com/cosmos/cosmos-sdk/x/gov/codec" + // groupcodec "github.com/cosmos/cosmos-sdk/x/group/codec" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -43,7 +43,7 @@ func init() { // Register all Amino interfaces and concrete types on the authz and gov Amino codec so that this can later be // used to properly serialize MsgGrant, MsgExec and MsgSubmitProposal instances - RegisterLegacyAminoCodec(authzcodec.Amino) - RegisterLegacyAminoCodec(govcodec.Amino) - RegisterLegacyAminoCodec(groupcodec.Amino) + // RegisterLegacyAminoCodec(authzcodec.Amino) + // RegisterLegacyAminoCodec(govcodec.Amino) + // RegisterLegacyAminoCodec(groupcodec.Amino) } diff --git a/x/transfermiddleware/types/excepted_keepers.go b/x/transfermiddleware/types/excepted_keepers.go index 098de2df4..968e93a34 100644 --- a/x/transfermiddleware/types/excepted_keepers.go +++ b/x/transfermiddleware/types/excepted_keepers.go @@ -5,21 +5,20 @@ import ( tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" ) type BankKeeper interface { - MintCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error - BurnCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error - SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - SendCoins(ctx sdk.Context, fromAddr, toAddr sdk.AccAddress, amt sdk.Coins) error + MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error + BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error + SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error + SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error + SendCoins(ctx context.Context, fromAddr, toAddr sdk.AccAddress, amt sdk.Coins) error BlockedAddr(addr sdk.AccAddress) bool - GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin + GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin } type TransferKeeper interface { - GetReceiveEnabled(ctx sdk.Context) bool Transfer(goCtx context.Context, msg *transfertypes.MsgTransfer) (*transfertypes.MsgTransferResponse, error) HasDenomTrace(ctx sdk.Context, denomTraceHash tmbytes.HexBytes) bool SetDenomTrace(ctx sdk.Context, denomTrace transfertypes.DenomTrace) diff --git a/x/transfermiddleware/types/msg.go b/x/transfermiddleware/types/msg.go index 9ad3ee9a5..f4a7ee3d1 100644 --- a/x/transfermiddleware/types/msg.go +++ b/x/transfermiddleware/types/msg.go @@ -3,8 +3,8 @@ package types import ( sdkerrors "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - host "github.com/cosmos/ibc-go/v7/modules/core/24-host" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + host "github.com/cosmos/ibc-go/v8/modules/core/24-host" ) var _ sdk.Msg = &MsgAddParachainIBCTokenInfo{} diff --git a/x/tx-boundary/ante/antetest/ante_test.go b/x/tx-boundary/ante/antetest/ante_test.go index 3388f0b18..76c3ab85f 100644 --- a/x/tx-boundary/ante/antetest/ante_test.go +++ b/x/tx-boundary/ante/antetest/ante_test.go @@ -3,6 +3,8 @@ package antetest import ( "testing" + sdkmath "cosmossdk.io/math" + cdctypes "github.com/cosmos/cosmos-sdk/codec/types" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" "github.com/cosmos/cosmos-sdk/testutil/testdata" @@ -21,7 +23,7 @@ func TestAnteTestSuite(t *testing.T) { func (s *AnteTestSuite) TestStakingAnteBasic() { _, _, addr1 := testdata.KeyTestPubAddr() - delegateMsg := stakingtypes.NewMsgDelegate(s.delegator, s.validators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10000000))) + delegateMsg := stakingtypes.NewMsgDelegate(s.delegator.String(), s.validators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(10000000))) msgDelegateAny, err := cdctypes.NewAnyWithValue(delegateMsg) require.NoError(s.T(), err) @@ -36,7 +38,7 @@ func (s *AnteTestSuite) TestStakingAnteBasic() { }{ { desc: "Case delegate success", - txMsg: stakingtypes.NewMsgDelegate(s.delegator, s.validators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10000000))), + txMsg: stakingtypes.NewMsgDelegate(s.delegator.String(), s.validators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(10000000))), malleate: func() error { return nil }, @@ -44,7 +46,7 @@ func (s *AnteTestSuite) TestStakingAnteBasic() { }, { desc: "Case redelegate success", - txMsg: stakingtypes.NewMsgBeginRedelegate(s.delegator, s.validators[0].GetOperator(), s.newvalidators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10000000))), + txMsg: stakingtypes.NewMsgBeginRedelegate(s.delegator.String(), s.validators[0].GetOperator(), s.newvalidators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(10000000))), malleate: func() error { return nil }, @@ -60,7 +62,7 @@ func (s *AnteTestSuite) TestStakingAnteBasic() { }, { desc: "Case delegate failed", - txMsg: stakingtypes.NewMsgDelegate(s.delegator, s.validators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10000000))), + txMsg: stakingtypes.NewMsgDelegate(s.delegator.String(), s.validators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(10000000))), malleate: func() error { s.app.TxBoundaryKeepper.SetLimitPerAddr(s.ctx, addr2, types.LimitPerAddr{ DelegateCount: 5, @@ -73,7 +75,7 @@ func (s *AnteTestSuite) TestStakingAnteBasic() { }, { desc: "Case redelegate failed", - txMsg: stakingtypes.NewMsgBeginRedelegate(s.delegator, s.validators[0].GetOperator(), s.newvalidators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10000000))), + txMsg: stakingtypes.NewMsgBeginRedelegate(s.delegator.String(), s.validators[0].GetOperator(), s.newvalidators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(10000000))), malleate: func() error { s.app.TxBoundaryKeepper.SetLimitPerAddr(s.ctx, addr2, types.LimitPerAddr{ DelegateCount: 5, @@ -122,7 +124,7 @@ func (s *AnteTestSuite) TestStakingAnteBasic() { func (s *AnteTestSuite) TestStakingAnteUpdateLimit() { _, _, addr1 := testdata.KeyTestPubAddr() - delegateMsg := stakingtypes.NewMsgDelegate(s.delegator, s.validators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10000000))) + delegateMsg := stakingtypes.NewMsgDelegate(s.delegator.String(), s.validators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(10000000))) msgDelegateAny, err := cdctypes.NewAnyWithValue(delegateMsg) require.NoError(s.T(), err) @@ -139,7 +141,7 @@ func (s *AnteTestSuite) TestStakingAnteUpdateLimit() { }{ { desc: "Case delegate success update limit", - txMsg: stakingtypes.NewMsgDelegate(s.delegator, s.validators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10000000))), + txMsg: stakingtypes.NewMsgDelegate(s.delegator.String(), s.validators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(10000000))), malleate: func() error { s.app.TxBoundaryKeepper.SetLimitPerAddr(s.ctx, addr2, types.LimitPerAddr{ DelegateCount: 5, @@ -153,7 +155,7 @@ func (s *AnteTestSuite) TestStakingAnteUpdateLimit() { }, { desc: "Case redelegate success update limit", - txMsg: stakingtypes.NewMsgBeginRedelegate(s.delegator, s.validators[0].GetOperator(), s.newvalidators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10000000))), + txMsg: stakingtypes.NewMsgBeginRedelegate(s.delegator.String(), s.validators[0].GetOperator(), s.newvalidators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(10000000))), malleate: func() error { s.app.TxBoundaryKeepper.SetLimitPerAddr(s.ctx, addr2, types.LimitPerAddr{ DelegateCount: 5, @@ -181,7 +183,7 @@ func (s *AnteTestSuite) TestStakingAnteUpdateLimit() { }, { desc: "Case delegate fail update limit", - txMsg: stakingtypes.NewMsgDelegate(s.delegator, s.validators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10000000))), + txMsg: stakingtypes.NewMsgDelegate(s.delegator.String(), s.validators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(10000000))), malleate: func() error { s.app.TxBoundaryKeepper.SetLimitPerAddr(s.ctx, addr2, types.LimitPerAddr{ DelegateCount: 5, @@ -195,7 +197,7 @@ func (s *AnteTestSuite) TestStakingAnteUpdateLimit() { }, { desc: "Case redelegate fail update limit", - txMsg: stakingtypes.NewMsgBeginRedelegate(s.delegator, s.validators[0].GetOperator(), s.newvalidators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10000000))), + txMsg: stakingtypes.NewMsgBeginRedelegate(s.delegator.String(), s.validators[0].GetOperator(), s.newvalidators[0].GetOperator(), sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(10000000))), malleate: func() error { s.app.TxBoundaryKeepper.SetLimitPerAddr(s.ctx, addr2, types.LimitPerAddr{ DelegateCount: 5, diff --git a/x/tx-boundary/ante/antetest/ante_test_setup.go b/x/tx-boundary/ante/antetest/ante_test_setup.go index f66a64acf..21962bdae 100644 --- a/x/tx-boundary/ante/antetest/ante_test_setup.go +++ b/x/tx-boundary/ante/antetest/ante_test_setup.go @@ -1,10 +1,12 @@ package antetest import ( + "context" "time" - "cosmossdk.io/math" tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + + "cosmossdk.io/math" tmtypes "github.com/cometbft/cometbft/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/tx" @@ -16,14 +18,14 @@ import ( "github.com/cosmos/cosmos-sdk/types/tx/signing" xauthsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/cosmos/ibc-go/v7/testing/mock" + "github.com/cosmos/ibc-go/v8/testing/mock" "github.com/notional-labs/composable/v6/app" "github.com/notional-labs/composable/v6/app/helpers" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" ) -var BaseBalance = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(10000000000))) +var BaseBalance = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(10000000000))) type AnteTestSuite struct { suite.Suite @@ -40,7 +42,7 @@ type AnteTestSuite struct { func (suite *AnteTestSuite) SetupTest() { suite.app, suite.delegator, suite.validators = helpers.SetupComposableAppWithValSetWithGenAccout(suite.T()) - suite.ctx = suite.app.BaseApp.NewContext(false, tmproto.Header{Height: 1, ChainID: "centauri-1", Time: time.Now().UTC()}) + suite.ctx = suite.app.BaseApp.NewContextLegacy(false, tmproto.Header{Height: 1, ChainID: "centauri-1", Time: time.Now().UTC()}) app.FundAccount(suite.app.BankKeeper, suite.ctx, suite.delegator, BaseBalance) encodingConfig := app.MakeEncodingConfig() @@ -56,7 +58,9 @@ func (suite *AnteTestSuite) SetupTest() { validators := make([]stakingtypes.Validator, 0, len(valSet.Validators)) for _, val := range valSet.Validators { + // lint:ignore SA1019 reason for ignoring pk, _ := cryptocodec.FromTmPubKeyInterface(val.PubKey) + pkAny, _ := codectypes.NewAnyWithValue(pk) validator := stakingtypes.Validator{ OperatorAddress: sdk.ValAddress(val.Address).String(), @@ -84,7 +88,7 @@ func (s *AnteTestSuite) CreateTestTx(privs []cryptotypes.PrivKey, accNums, accSe sigV2 := signing.SignatureV2{ PubKey: priv.PubKey(), Data: &signing.SingleSignatureData{ - SignMode: s.clientCtx.TxConfig.SignModeHandler().DefaultMode(), + SignMode: signing.SignMode(s.clientCtx.TxConfig.SignModeHandler().DefaultMode().Number()), Signature: nil, }, Sequence: accSeqs[i], @@ -105,7 +109,8 @@ func (s *AnteTestSuite) CreateTestTx(privs []cryptotypes.PrivKey, accNums, accSe Sequence: accSeqs[i], } sigV2, err := tx.SignWithPrivKey( - s.clientCtx.TxConfig.SignModeHandler().DefaultMode(), + context.Background(), + signing.SignMode(s.clientCtx.TxConfig.SignModeHandler().DefaultMode().Number()), signerData, s.txBuilder, priv, diff --git a/x/tx-boundary/keeper/keeper.go b/x/tx-boundary/keeper/keeper.go index 145c62807..cda0cfef4 100644 --- a/x/tx-boundary/keeper/keeper.go +++ b/x/tx-boundary/keeper/keeper.go @@ -3,10 +3,10 @@ package keeper import ( "fmt" - "github.com/cometbft/cometbft/libs/log" + "cosmossdk.io/log" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/notional-labs/composable/v6/x/tx-boundary/types" diff --git a/x/tx-boundary/keeper/keeper_test.go b/x/tx-boundary/keeper/keeper_test.go index 660ee6303..8bfa5f16c 100644 --- a/x/tx-boundary/keeper/keeper_test.go +++ b/x/tx-boundary/keeper/keeper_test.go @@ -2,9 +2,7 @@ package keeper_test import ( "testing" - "time" - tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" @@ -23,7 +21,7 @@ type KeeperTestSuite struct { func (suite *KeeperTestSuite) SetupTest() { suite.app = helpers.SetupComposableAppWithValSet(suite.T()) - suite.ctx = suite.app.BaseApp.NewContext(false, tmproto.Header{Height: 1, ChainID: "centauri-1", Time: time.Now().UTC()}) + suite.ctx = suite.app.BaseApp.NewContext(false) } func TestKeeperTestSuite(t *testing.T) { diff --git a/x/tx-boundary/module.go b/x/tx-boundary/module.go index 1229f262c..eb0d1c848 100644 --- a/x/tx-boundary/module.go +++ b/x/tx-boundary/module.go @@ -105,6 +105,12 @@ func (AppModule) Name() string { return types.ModuleName } +// IsAppModule implements module.AppModule. +func (AppModule) IsAppModule() {} + +// IsOnePerModuleType implements module.AppModule. +func (AppModule) IsOnePerModuleType() {} + // RegisterInvariants registers the tx-boundary module invariants. func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} @@ -135,9 +141,6 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw // ConsensusVersion implements AppModule/ConsensusVersion. func (AppModule) ConsensusVersion() uint64 { return 1 } -// BeginBlock returns the begin blocker for the tx-boundary module. -func (am AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) {} - // ProposalContents doesn't return any content functions for governance proposals. func (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedProposalMsg { return nil diff --git a/x/tx-boundary/types/codec.go b/x/tx-boundary/types/codec.go index b2822d85b..0816733a9 100644 --- a/x/tx-boundary/types/codec.go +++ b/x/tx-boundary/types/codec.go @@ -4,12 +4,11 @@ import ( "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" - authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec" - govcodec "github.com/cosmos/cosmos-sdk/x/gov/codec" ) var ( - amino = codec.NewLegacyAmino() + amino = codec.NewLegacyAmino() + //lint:ignore SA1019 reason for ignoring ModuleCdc = codec.NewAminoCodec(amino) ) @@ -17,8 +16,6 @@ func init() { RegisterLegacyAminoCodec(amino) cryptocodec.RegisterCrypto(amino) - RegisterLegacyAminoCodec(authzcodec.Amino) - RegisterLegacyAminoCodec(govcodec.Amino) amino.Seal() } From 0a1fc6451f4913f888f11a54c8e249fc7734c74d Mon Sep 17 00:00:00 2001 From: Kien Date: Wed, 29 May 2024 13:56:48 +0700 Subject: [PATCH 2/7] deps: use ibc forks with squashed commits (#525) --- Makefile | 5 +- go.mod | 4 +- go.sum | 8 +-- kien-note.md | 57 ------------------- scripts/50/migrate-wasm-code.sh | 2 +- scripts/50/store-wasm-code.sh | 8 ++- .../relayer_hyperspace/config-chain-a.toml | 2 +- .../relayer_hyperspace/config-chain-b.toml | 6 +- scripts/relayer_hyperspace/create-channel.sh | 2 +- scripts/relayer_hyperspace/create-clients.sh | 2 +- .../relayer_hyperspace/create-connections.sh | 2 +- scripts/relayer_hyperspace/start-relay.sh | 2 +- .../relayer_hyperspace/v47/create-clients.sh | 2 +- .../v47/create-connection.sh | 2 +- scripts/upgrade/setup-polkadot-node.sh | 2 +- test | 1 - 16 files changed, 29 insertions(+), 78 deletions(-) delete mode 100644 kien-note.md delete mode 100644 test diff --git a/Makefile b/Makefile index e5ec23302..78cf50e9b 100644 --- a/Makefile +++ b/Makefile @@ -214,7 +214,10 @@ pica-upgrade: relayer-test-cleanup: @echo "Cleaning up" - ./scripts/relayer_hyperspace/cleanup.sh + @rm -rf mytestnet > /dev/null 2>&1 + @killall parachain-node > /dev/null 2>&1 + @killall polkadot > /dev/null 2>&1 + @./scripts/relayer_hyperspace/cleanup.sh ############################################################################### ### Integration Tests ### ############################################################################### diff --git a/go.mod b/go.mod index 69929be76..8aea4759b 100644 --- a/go.mod +++ b/go.mod @@ -359,9 +359,9 @@ replace ( github.com/cosmos/cosmos-sdk => github.com/notional-labs/cosmos-sdk v0.50.5-patch-validators-trim-tag github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8 => github.com/notional-labs/ibc-apps/middleware/packet-forward-middleware/v8 v8.0.0-20240508031447-347412725653 - github.com/cosmos/ibc-go/modules/light-clients/08-wasm => github.com/notional-labs/ibc-go/modules/light-clients/08-wasm v0.0.0-20240522081622-85c49c80dc29 + github.com/cosmos/ibc-go/modules/light-clients/08-wasm => github.com/notional-labs/ibc-go/modules/light-clients/08-wasm v0.0.0-20240528171744-4baae4266be1 //github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8 => github.com/notional-labs/ibc-apps/middleware/packet-forward-middleware/v8 v8.0.0-20240504082418-e4d8c9cb7044 - github.com/cosmos/ibc-go/v8 => github.com/notional-labs/ibc-go/v8 v8.0.0-alpha.1.0.20240515181700-c058e14324e8 + github.com/cosmos/ibc-go/v8 => github.com/notional-labs/ibc-go/v8 v8.0.0-alpha.1.0.20240528170913-e5e7d5434f75 // use cosmos-compatible protobufs github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 diff --git a/go.sum b/go.sum index 87bdaa299..27bbd8fe7 100644 --- a/go.sum +++ b/go.sum @@ -1385,10 +1385,10 @@ github.com/notional-labs/cosmos-sdk v0.50.5-patch-validators-trim-tag h1:lnMn2O2 github.com/notional-labs/cosmos-sdk v0.50.5-patch-validators-trim-tag/go.mod h1:oV/k6GJgXV9QPoM2fsYDPPsyPBgQbdotv532O6Mz1OQ= github.com/notional-labs/ibc-apps/middleware/packet-forward-middleware/v8 v8.0.0-20240508031447-347412725653 h1:P7Chh5O10Jtv+vvfaVpG72fv5LKVWQLEtCKQrMtbBdw= github.com/notional-labs/ibc-apps/middleware/packet-forward-middleware/v8 v8.0.0-20240508031447-347412725653/go.mod h1:NS+Ooc0vOyr1mAgAbt/HS8Dpes2dV7/YgOc+WxD63O4= -github.com/notional-labs/ibc-go/modules/light-clients/08-wasm v0.0.0-20240522081622-85c49c80dc29 h1:h+EVIIwTI9iBtUhgBay5dJs+bUCnTHDOaXT0uujm6Zs= -github.com/notional-labs/ibc-go/modules/light-clients/08-wasm v0.0.0-20240522081622-85c49c80dc29/go.mod h1:u2FXNcSxzzn5IwjWBA51HKMwiYMRK6/G35VmSJULhP0= -github.com/notional-labs/ibc-go/v8 v8.0.0-alpha.1.0.20240515181700-c058e14324e8 h1:RkivXDi3NoRZEjdbO0ueSykCnb7FPaBR0F8sWn5DlFM= -github.com/notional-labs/ibc-go/v8 v8.0.0-alpha.1.0.20240515181700-c058e14324e8/go.mod h1:x024D7fnWnTL6wNeoHbe0+JSjDaoQ3CNvJY8o9F4imE= +github.com/notional-labs/ibc-go/modules/light-clients/08-wasm v0.0.0-20240528171744-4baae4266be1 h1:QIyze/ch1sy7SNtEH0szWzH7aLAeB+XADl9eniLYQlc= +github.com/notional-labs/ibc-go/modules/light-clients/08-wasm v0.0.0-20240528171744-4baae4266be1/go.mod h1:u2FXNcSxzzn5IwjWBA51HKMwiYMRK6/G35VmSJULhP0= +github.com/notional-labs/ibc-go/v8 v8.0.0-alpha.1.0.20240528170913-e5e7d5434f75 h1:0o7I3+n65GCz1P1mDfSPqHE9iVJeQi8fyiQ086Kd6YI= +github.com/notional-labs/ibc-go/v8 v8.0.0-alpha.1.0.20240528170913-e5e7d5434f75/go.mod h1:x024D7fnWnTL6wNeoHbe0+JSjDaoQ3CNvJY8o9F4imE= github.com/nunnatsa/ginkgolinter v0.9.0 h1:Sm0zX5QfjJzkeCjEp+t6d3Ha0jwvoDjleP9XCsrEzOA= github.com/nunnatsa/ginkgolinter v0.9.0/go.mod h1:FHaMLURXP7qImeH6bvxWJUpyH+2tuqe5j4rW1gxJRmI= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= diff --git a/kien-note.md b/kien-note.md deleted file mode 100644 index 417d221b3..000000000 --- a/kien-note.md +++ /dev/null @@ -1,57 +0,0 @@ -# Running the test - -## How did i build the `hyperspace` and `cw-grandpa` binaries -Go to the `ComposableFi/composable-ibc`, and building it in the master branch - -https://github.com/ComposableFi/composable-ibc/tree/master/hyperspace - -## How to reproduce the case - -1. Build the `picad` binary -```bash -make install -``` - -2. Run the localnet pica with `wasmClient` deployed -```bash -make localnet-pica -``` - -3. Run the localnet picasso -```bash -make localnet-picasso` -``` - -4. Run create clients -```bash -make relayer-create-clients -``` - - -# Current issue -## Client State decode into 08-wasm -`6981` -### Logging msg at ValidateBasic on cosmos side on v47 -add this log at ValidateBasic() function, at modules/core/02-client/types/msgs/go - -```go -fmt.Printf("msg.ClientState : %v\n", msg.ClientState) -clientState, err := UnpackClientState(msg.ClientState) -if err != nil { - return err -} -``` - -then, i get this value, basically, it says the clientState constructed from hyperspace is `08-wasm` - -``` -msg.ClientState : &Any{TypeUrl:/ibc.lightclients.wasm.v1.ClientState,Value:[10 204 1 10 40 47 105 98 99 46 108 105 103 104 116 99 108 105 101 110 116 115 46 103 114 97 110 100 112 97 46 118 49 46 67 108 105 101 110 116 83 116 97 116 101 18 159 1 10 32 146 240 69 84 49 1 104 67 240 92 67 123 199 101 70 152 115 0 205 47 91 76 8 16 108 92 254 197 173 59 35 206 16 67 24 5 40 2 48 167 16 56 20 66 36 10 32 199 203 131 204 79 173 68 214 92 44 140 240 46 150 66 83 144 154 219 206 75 174 118 245 90 177 194 134 163 255 44 194 16 1 66 36 10 32 20 164 40 156 190 217 24 43 102 84 102 53 144 50 192 109 195 183 142 183 238 104 52 237 95 167 180 159 149 51 85 167 16 1 66 36 10 32 184 160 36 189 114 208 123 150 110 8 135 7 155 93 135 60 197 160 19 53 186 39 222 219 43 141 20 36 169 95 136 128 16 1 18 32 157 80 86 242 181 81 33 48 148 160 59 120 141 184 2 116 68 81 117 186 231 140 143 237 227 139 242 90 45 220 132 188 26 5 8 167 16 16 20],XXX_unrecognized:[]} -``` - - -### Logging it at v50 - -`hyperspace` - -``` -msg.ClientState : &Any{TypeUrl:/ibc.lightclients.grandpa.v1.ClientState,Value:[10 32 106 46 120 116 154 178 37 115 118 3 65 47 241 205 37 168 10 129 250 125 20 121 236 81 77 119 185 185 155 72 122 11 16 17 40 2 48 167 16 56 1 66 36 10 32 199 203 131 204 79 173 68 214 92 44 140 240 46 150 66 83 144 154 219 206 75 174 118 245 90 177 194 134 163 255 44 194 16 1 66 36 10 32 20 164 40 156 190 217 24 43 102 84 102 53 144 50 192 109 195 183 142 183 238 104 52 237 95 167 180 159 149 51 85 167 16 1 66 36 10 32 184 160 36 189 114 208 123 150 110 8 135 7 155 93 135 60 197 160 19 53 186 39 222 219 43 141 20 36 169 95 136 128 16 1 66 36 10 32 140 4 179 243 122 62 235 12 208 118 154 107 153 87 196 106 60 118 44 155 224 91 89 26 250 8 121 224 61 159 194 212 16 1],XXX_unrecognized:[]} diff --git a/scripts/50/migrate-wasm-code.sh b/scripts/50/migrate-wasm-code.sh index 5fec7112a..8d08175e4 100755 --- a/scripts/50/migrate-wasm-code.sh +++ b/scripts/50/migrate-wasm-code.sh @@ -4,7 +4,7 @@ DENOM="ppica" HOME_DIR="mytestnet" CHAINID="centauri-dev" BINARY=_build/new/picad -WASM_CONTRACT_PATH="$PWD/bin/ics10_grandpa_cw.wasm" +WASM_CONTRACT_PATH="composable-ibc/target/wasm32-unknown-unknown/release/ics10_grandpa_cw.wasm" WASM_CLIENT_ID="08-wasm-0" HEX_CHECKSUM=$(sha256sum "$WASM_CONTRACT_PATH" | awk '{ print $1 }') diff --git a/scripts/50/store-wasm-code.sh b/scripts/50/store-wasm-code.sh index 5200a01a4..c7e795f65 100755 --- a/scripts/50/store-wasm-code.sh +++ b/scripts/50/store-wasm-code.sh @@ -4,11 +4,17 @@ DENOM="ppica" HOME_DIR="mytestnet" CHAINID="centauri-dev" BINARY=picad -WASM_CONTRACT_PATH="$PWD/bin/ics10_grandpa_cw.wasm" +WASM_CONTRACT_PATH="composable-ibc/target/wasm32-unknown-unknown/release/ics10_grandpa_cw.wasm" + +HEX_CHECKSUM=$(sha256sum "$WASM_CONTRACT_PATH" | awk '{ print $1 }') +echo "Hex checksum is: $HEX_CHECKSUM" + # Wait for chain to start echo "Waiting for chain to start..." +sleep 10 +exit 0 picad keys show mykey --keyring-backend test --home mytestnet $BINARY tx ibc-wasm store-code $WASM_CONTRACT_PATH --from mykey --keyring-backend test --chain-id $CHAINID --home $HOME_DIR --gas 20002152622 --fees 20020166${DENOM} -y diff --git a/scripts/relayer_hyperspace/config-chain-a.toml b/scripts/relayer_hyperspace/config-chain-a.toml index 7ae746d59..fd1a2cfe1 100644 --- a/scripts/relayer_hyperspace/config-chain-a.toml +++ b/scripts/relayer_hyperspace/config-chain-a.toml @@ -8,6 +8,6 @@ connection_id = "connection-0" commitment_prefix = "0x6962632f" private_key = "//Alice" ss58_version = 49 -channel_whitelist = [["channel-0", "transfer"], ["channel-0", "transfer"], ["channel-0", "transfer"]] +channel_whitelist = [["channel-0", "transfer"], ["channel-0", "transfer"], ["channel-0", "transfer"], ["channel-0", "transfer"]] finality_protocol = "Grandpa" key_type = "sr25519" diff --git a/scripts/relayer_hyperspace/config-chain-b.toml b/scripts/relayer_hyperspace/config-chain-b.toml index 532aa4864..c32673779 100644 --- a/scripts/relayer_hyperspace/config-chain-b.toml +++ b/scripts/relayer_hyperspace/config-chain-b.toml @@ -4,7 +4,7 @@ rpc_url = "http://127.0.0.1:26657/" grpc_url = "http://127.0.0.1:9090/" websocket_url = "ws://127.0.0.1:26657/websocket" chain_id = "centauri-dev" -client_id = "07-tendermint-0" +client_id = "07-tendermint-1" connection_id = "connection-0" account_prefix = "pica" fee_denom = "ppica" @@ -12,8 +12,8 @@ fee_amount = "9223372036854776" gas_limit = 9223372036854775806 store_prefix = "ibc" max_tx_size = 20000000 -wasm_code_id = "9d5056f2b551213094a03b788db80274445175bae78c8fede38bf25a2ddc84bc" -channel_whitelist = [["channel-0", "transfer"], ["channel-0", "transfer"], ["channel-0", "transfer"]] +wasm_checksum = "2499377e7b99e1b621f980ffc2f6a9322742717c7ede1bf7c97235440450fffe" +channel_whitelist = [["channel-0", "transfer"], ["channel-0", "transfer"], ["channel-0", "transfer"], ["channel-0", "transfer"]] mnemonic = "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" skip_optional_client_updates = false max_packets_to_process = 50 diff --git a/scripts/relayer_hyperspace/create-channel.sh b/scripts/relayer_hyperspace/create-channel.sh index bf11e563d..4733fe41a 100755 --- a/scripts/relayer_hyperspace/create-channel.sh +++ b/scripts/relayer_hyperspace/create-channel.sh @@ -1,2 +1,2 @@ -RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info /home/kien6034/notional/composable-ibc/target/release/hyperspace create-channel --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 --port-id transfer --version ics20-1 --order unordered \ No newline at end of file +RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info composable-ibc/target/release/hyperspace create-channel --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 --port-id transfer --version ics20-1 --order unordered \ No newline at end of file diff --git a/scripts/relayer_hyperspace/create-clients.sh b/scripts/relayer_hyperspace/create-clients.sh index 30cfc4a39..5c68b93ca 100755 --- a/scripts/relayer_hyperspace/create-clients.sh +++ b/scripts/relayer_hyperspace/create-clients.sh @@ -1,2 +1,2 @@ -RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info /home/kien6034/notional/composable-ibc/target/release/hyperspace create-clients --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 \ No newline at end of file +RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info composable-ibc/target/release/hyperspace create-clients --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 \ No newline at end of file diff --git a/scripts/relayer_hyperspace/create-connections.sh b/scripts/relayer_hyperspace/create-connections.sh index e64c340c2..6fbdcc6fe 100755 --- a/scripts/relayer_hyperspace/create-connections.sh +++ b/scripts/relayer_hyperspace/create-connections.sh @@ -1 +1 @@ -RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info /home/kien6034/notional/composable-ibc/target/release/hyperspace create-connection --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 \ No newline at end of file +RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info composable-ibc/target/release/hyperspace create-connection --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 \ No newline at end of file diff --git a/scripts/relayer_hyperspace/start-relay.sh b/scripts/relayer_hyperspace/start-relay.sh index 784df00b5..52847f68d 100755 --- a/scripts/relayer_hyperspace/start-relay.sh +++ b/scripts/relayer_hyperspace/start-relay.sh @@ -1,2 +1,2 @@ -RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info /home/kien6034/notional/composable-ibc/target/release/hyperspace relay --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 \ No newline at end of file +RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info composable-ibc/target/release/hyperspace relay --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 \ No newline at end of file diff --git a/scripts/relayer_hyperspace/v47/create-clients.sh b/scripts/relayer_hyperspace/v47/create-clients.sh index 8f18af593..2b00778df 100755 --- a/scripts/relayer_hyperspace/v47/create-clients.sh +++ b/scripts/relayer_hyperspace/v47/create-clients.sh @@ -1,2 +1,2 @@ -RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info /home/kien6034/notional/composable-ibc-old/bin/hyperspace create-clients --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 +RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info composable-ibc/target/release/hyperspace create-clients --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 diff --git a/scripts/relayer_hyperspace/v47/create-connection.sh b/scripts/relayer_hyperspace/v47/create-connection.sh index 3463b74ab..e0df8b253 100755 --- a/scripts/relayer_hyperspace/v47/create-connection.sh +++ b/scripts/relayer_hyperspace/v47/create-connection.sh @@ -1,2 +1,2 @@ -RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info /home/kien6034/notional/composable-ibc-old/bin/hyperspace create-connection --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 +RUST_LOG=hyperspace_cosmos=trace,hyperspace=trace,info composable-ibc/bin/hyperspace create-connection --config-a scripts/relayer_hyperspace/config-chain-a.toml --config-b scripts/relayer_hyperspace/config-chain-b.toml --config-core scripts/relayer_hyperspace/config-core.toml --delay-period 10 diff --git a/scripts/upgrade/setup-polkadot-node.sh b/scripts/upgrade/setup-polkadot-node.sh index b47d6e2b3..a15e70a01 100755 --- a/scripts/upgrade/setup-polkadot-node.sh +++ b/scripts/upgrade/setup-polkadot-node.sh @@ -1,3 +1,3 @@ export PARA_HOST=127.0.0.1 -cd /home/kien6034/notional/composable-ibc-old/scripts/zombienet +cd /home/kien6034/notional/composable-ibc/scripts/zombienet process-compose up -f process-compose.yml & sleep 100 \ No newline at end of file diff --git a/test b/test deleted file mode 100644 index 4acfcdd49..000000000 --- a/test +++ /dev/null @@ -1 +0,0 @@ -Error: status: Unknown, message: "recovered: unimplementedstack:\ngoroutine 745 [running]:\nruntime/debug.Stack()\n\truntime/debug/stack.go:24 +0x5e\ngithub.com/cosmos/cosmos-sdk/baseapp.NewBaseApp.newDefaultRecoveryMiddleware.func5({0x2bd4ae0, 0x3b03910})\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/recovery.go:74 +0x25\ngithub.com/cosmos/cosmos-sdk/baseapp.NewBaseApp.newDefaultRecoveryMiddleware.newRecoveryMiddleware.func7({0x2bd4ae0?, 0x3b03910?})\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/recovery.go:42 +0x2d\ngithub.com/cosmos/cosmos-sdk/baseapp.processRecovery({0x2bd4ae0, 0x3b03910}, 0x0?)\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/recovery.go:31 +0x2f\ngithub.com/cosmos/cosmos-sdk/baseapp.processRecovery({0x2bd4ae0, 0x3b03910}, 0x0?)\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/recovery.go:36 +0x53\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx.func1()\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/baseapp.go:836 +0x156\npanic({0x2bd4ae0?, 0x3b03910?})\n\truntime/panic.go:770 +0x132\ngithub.com/cosmos/ibc-go/v8/modules/light-clients/10-grandpa.(*ClientState).Validate(0xc000c9b500?)\n\tgithub.com/cosmos/ibc-go/v8@v8.1.1/modules/light-clients/10-grandpa/client_state.go:24 +0x25\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client/types.MsgCreateClient.ValidateBasic({0xc000c9b500?, 0xc000c9b560?, {0xc00112b800?, 0xc002610600?}})\n\tgithub.com/cosmos/ibc-go/v8@v8.1.1/modules/core/02-client/types/msgs.go:73 +0x11f\ngithub.com/cosmos/cosmos-sdk/baseapp.validateBasicTxMsgs({0xc000c89730?, 0x263?, 0x280?})\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/baseapp.go:625 +0x86\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx(0xc001bbe248, 0x2, {0xc0010cf680, 0x263, 0x280})\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/baseapp.go:873 +0x326\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).Simulate(...)\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/test_helpers.go:28\ngithub.com/cosmos/cosmos-sdk/x/auth/tx.txServer.Simulate({{{0x0, 0x0, 0x0}, {0x3b68088, 0xc00166d920}, 0x0, {0xc001168bd0, 0xc}, {0x3b861c0, 0xc0012a3c20}, ...}, ...}, ...)\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/x/auth/tx/service.go:98 +0x12c\ngithub.com/cosmos/cosmos-sdk/types/tx._Service_Simulate_Handler.func1({0x3b43da0?, 0xc001328f60?}, {0x30a28e0?, 0xc007946500?})\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/types/tx/service.pb.go:1443 +0xcb\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).RegisterGRPCServer.func1({0x3b43da0, 0xc0010ba5a0}, {0x30a28e0, 0xc007946500}, 0xc0014a5830?, 0xc0071e5188)\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/grpcserver.go:70 +0x458\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).RegisterGRPCServer.func2.ChainUnaryServer.2.1({0x3b43da0?, 0xc0010ba5a0?}, {0x30a28e0?, 0xc007946500?})\n\tgithub.com/grpc-ecosystem/go-grpc-middleware@v1.4.0/chain.go:48 +0x45\ngithub.com/grpc-ecosystem/go-grpc-middleware/recovery.UnaryServerInterceptor.func1({0x3b43da0?, 0xc0010ba5a0?}, {0x30a28e0?, 0xc007946500?}, 0x0?, 0xc0071e5188?)\n\tgithub.com/grpc-ecosystem/go-grpc-middleware@v1.4.0/recovery/interceptors.go:33 +0xb0\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).RegisterGRPCServer.func2.ChainUnaryServer.2({0x3b43da0, 0xc0010ba5a0}, {0x30a28e0, 0xc007946500}, 0xc007946540, 0x28?)\n\tgithub.com/grpc-ecosystem/go-grpc-middleware@v1.4.0/chain.go:53 +0x123\ngithub.com/cosmos/cosmos-sdk/types/tx._Service_Simulate_Handler({0x306f1e0, 0xc000e9c000}, {0x3b43da0, 0xc0010ba5a0}, 0xc00072ab80, 0xc0010ba5d0)\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/types/tx/service.pb.go:1445 +0x143\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).RegisterGRPCServer.func2({0x306f1e0, 0xc000e9c000}, {0x3b43da0, 0xc0010ba5a0}, 0xc00072ab80, 0xc001b08120?)\n\tgithub.com/cosmos/cosmos-sdk@v0.50.5/baseapp/grpcserver.go:84 +0x112\ngoogle.golang.org/grpc.(*Server).processUnaryRPC(0xc0016fa800, {0x3b43da0, 0xc0051e54d0}, {0x3b5cd40, 0xc0017e21a0}, 0xc001b08120, 0xc000d03860, 0xc000fb81c0, 0x0)\n\tgoogle.golang.org/grpc@v1.62.1/server.go:1386 +0xdf8\ngoogle.golang.org/grpc.(*Server).handleStream(0xc0016fa800, {0x3b5cd40, 0xc0017e21a0}, 0xc001b08120)\n\tgoogle.golang.org/grpc@v1.62.1/server.go:1797 +0xe87\ngoogle.golang.org/grpc.(*Server).serveStreams.func2.1()\n\tgoogle.golang.org/grpc@v1.62.1/server.go:1027 +0x8b\ncreated by google.golang.org/grpc.(*Server).serveStreams.func2 in goroutine 761\n\tgoogle.golang.org/grpc@v1.62.1/server.go:1038 +0x125\n: panic [cosmos/cosmos-sdk@v0.50.5/baseapp/recovery.go:72] with gas used: '1174'", details: [], metadata: MetadataMap { headers: {"content-type": "application/grpc", "x-cosmos-block-height": "42"} } \ No newline at end of file From 46975cd2b3a88523d4df2197fc59a91895ada396 Mon Sep 17 00:00:00 2001 From: Hoa Nguyen Date: Fri, 31 May 2024 02:02:27 +0700 Subject: [PATCH 3/7] fix: add test and fix miss BeginBlock (#523) --- .github/workflows/interchaintest.yml | 96 +++ Makefile | 24 +- app/test_helpers.go | 1 + scripts/run-node.sh | 1 + tests/interchaintest/chain_core_test.go | 766 ++++++++++++++++++ .../chain_miscellaneous_test.go | 353 ++++++++ .../interchaintest/contracts/cw_template.wasm | Bin 0 -> 132664 bytes x/mint/abci.go | 24 +- x/mint/module.go | 5 + x/ratelimit/keeper/abci.go | 22 +- x/ratelimit/module.go | 10 +- x/ratelimit/relay_test.go | 2 + x/stakingmiddleware/keeper/genesis.go | 3 + x/transfermiddleware/keeper/abci.go | 13 +- x/transfermiddleware/module.go | 5 +- 15 files changed, 1299 insertions(+), 26 deletions(-) create mode 100644 tests/interchaintest/chain_core_test.go create mode 100644 tests/interchaintest/chain_miscellaneous_test.go create mode 100644 tests/interchaintest/contracts/cw_template.wasm diff --git a/.github/workflows/interchaintest.yml b/.github/workflows/interchaintest.yml index 214cd0a8a..97e62ed2d 100644 --- a/.github/workflows/interchaintest.yml +++ b/.github/workflows/interchaintest.yml @@ -98,6 +98,102 @@ jobs: env: BRANCH_CI: "latest" + test-chain-core: + runs-on: ubuntu-latest + needs: build-and-push-image + steps: + - name: Set up Go 1.22 + uses: actions/setup-go@v4 + with: + go-version: '1.22' + + - name: checkout code + uses: actions/checkout@v4 + + - run: make ictest-chain-core + env: + BRANCH_CI: "latest" + + test-ibc-cosmos: + runs-on: ubuntu-latest + needs: build-and-push-image + steps: + - name: Set up Go 1.22 + uses: actions/setup-go@v4 + with: + go-version: '1.22' + + - name: checkout code + uses: actions/checkout@v4 + + - run: make ictest-ibc-cosmos + env: + BRANCH_CI: "latest" + + test-ictest-ibc-hooks: + runs-on: ubuntu-latest + needs: build-and-push-image + steps: + - name: Set up Go 1.22 + uses: actions/setup-go@v4 + with: + go-version: '1.22' + + - name: checkout code + uses: actions/checkout@v4 + + - run: make ictest-ibc-hooks + env: + BRANCH_CI: "latest" + + test-ictest-miscellaneous: + runs-on: ubuntu-latest + needs: build-and-push-image + steps: + - name: Set up Go 1.22 + uses: actions/setup-go@v4 + with: + go-version: '1.22' + + - name: checkout code + uses: actions/checkout@v4 + + - run: make ictest-miscellaneous + env: + BRANCH_CI: "latest" + + test-ictest-pfm-timeout: + runs-on: ubuntu-latest + needs: build-and-push-image + steps: + - name: Set up Go 1.22 + uses: actions/setup-go@v4 + with: + go-version: '1.22' + + - name: checkout code + uses: actions/checkout@v4 + + - run: make ictest-pfm-timeout + env: + BRANCH_CI: "latest" + + test-ictest-pfm: + runs-on: ubuntu-latest + needs: build-and-push-image + steps: + - name: Set up Go 1.22 + uses: actions/setup-go@v4 + with: + go-version: '1.22' + + - name: checkout code + uses: actions/checkout@v4 + + - run: make ictest-pfm + env: + BRANCH_CI: "latest" + # test-ibc-transfer: # runs-on: ubuntu-latest # needs: build-and-push-image diff --git a/Makefile b/Makefile index 78cf50e9b..0e59afe9c 100644 --- a/Makefile +++ b/Makefile @@ -150,12 +150,34 @@ ictest-upgrade: cd tests/interchaintest && go test -timeout=25m -race -v -run TestCentauriUpgrade . # Executes all tests via interchaintest after compling a local image as juno:local -ictest-all: ictest-start-cosmos ictest-start-polkadot ictest-ibc +ictest-all: ictest-start-cosmos ictest-start-polkadot ictest-ibc ictest-ibc-cosmos ictest-chain-core ictest-pfm ictest-pfm-router ictest-pfm-timeout ictest-miscellaneous ictest-ibc-hooks # Executes push wasm client tests via interchaintest ictest-push-wasm: cd tests/interchaintest && go test -race -v -run TestPushWasmClientCode . +ictest-ibc-cosmos: + cd tests/interchaintest && go test -race -v -run TestComposableGaiaIBCTransfer . + +ictest-chain-core: + cd tests/interchaintest && go test -race -v -run TestCoreSDKCommands . + +ictest-pfm-timeout: + cd tests/interchaintest && go test -race -v -run TestTimeoutOnForward . + +ictest-pfm: + cd tests/interchaintest && go test -race -v -run TestPacketForwardMiddleware . + +ictest-pfm-router: + cd tests/interchaintest && go test -race -v -run TestPacketForwardMiddlewareRouter . + +ictest-ibc-hooks: + cd tests/interchaintest && go test -race -v -run TestComposableIBCHooks . + +ictest-miscellaneous: + cd tests/interchaintest && go test -race -v -run TestICTestMiscellaneous . + + # Init 2 cosmos chains and setup ibc between them init-test-interchain: clean-testing-data install ./scripts/test-upgrade-cosmos-chains.sh diff --git a/app/test_helpers.go b/app/test_helpers.go index 2b47c09c8..56b26030d 100644 --- a/app/test_helpers.go +++ b/app/test_helpers.go @@ -171,6 +171,7 @@ func SetupWithGenesisValSet( // init chain will set the validator set and initialize the genesis accounts _, err = app.InitChain( &abci.RequestInitChain{ + Time: time.Now(), ChainId: chainID, Validators: []abci.ValidatorUpdate{}, ConsensusParams: consensusParams, diff --git a/scripts/run-node.sh b/scripts/run-node.sh index eb685ff8c..f0342382c 100755 --- a/scripts/run-node.sh +++ b/scripts/run-node.sh @@ -58,6 +58,7 @@ $BINARY gentx $KEY 10030009994127689ppica --keyring-backend $KEYRING --chain-id update_test_genesis '.app_state["gov"]["params"]["voting_period"]="20s"' update_test_genesis '.app_state["gov"]["params"]["expedited_voting_period"]="10s"' +update_test_genesis '.app_state["stakingmiddleware"]["params"]["blocks_per_epoch"]="5"' update_test_genesis '.app_state["mint"]["params"]["mint_denom"]="'$DENOM'"' update_test_genesis '.app_state["gov"]["params"]["min_deposit"]=[{"denom":"'$DENOM'","amount": "1"}]' update_test_genesis '.app_state["crisis"]["constant_fee"]={"denom":"'$DENOM'","amount":"1000"}' diff --git a/tests/interchaintest/chain_core_test.go b/tests/interchaintest/chain_core_test.go new file mode 100644 index 000000000..8efd2b47e --- /dev/null +++ b/tests/interchaintest/chain_core_test.go @@ -0,0 +1,766 @@ +package interchaintest + +import ( + "context" + "fmt" + "math" + "testing" + "time" + + sdkmath "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/crypto/keyring" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/testutil" + "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" + + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + vestingcli "github.com/cosmos/cosmos-sdk/x/auth/vesting/client/cli" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +var ( + numValsOne = 1 + numFullNodesZero = 0 + genesisAmt = sdkmath.NewInt(10_000_000_000) + + mnemonic = "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" + + denomMetadata = banktypes.Metadata{ + Description: "Denom metadata for TOK (token)", + DenomUnits: []*banktypes.DenomUnit{ + { + Denom: "stake", + Exponent: 0, + Aliases: []string{}, + }, + { + Denom: "TOK", + Exponent: 6, + Aliases: []string{}, + }, + }, + Base: "stake", + Display: "TOK", + Name: "TOK", + Symbol: "TOK", + URI: "", + URIHash: "", + } + + baseBech32 = "pica" +) + +func TestCoreSDKCommands(t *testing.T) { + if testing.Short() { + t.Skip("skipping in short mode") + } + t.Parallel() + + cosmos.SetSDKConfig(baseBech32) + + sdk47Genesis := []cosmos.GenesisKV{ + cosmos.NewGenesisKV("app_state.gov.params.voting_period", "15s"), + cosmos.NewGenesisKV("app_state.gov.params.max_deposit_period", "10s"), + cosmos.NewGenesisKV("app_state.stakingmiddleware.params.blocks_per_epoch", 5), + cosmos.NewGenesisKV("app_state.gov.params.min_deposit.0.denom", "stake"), + cosmos.NewGenesisKV("app_state.gov.params.min_deposit.0.amount", "1"), + cosmos.NewGenesisKV("app_state.bank.denom_metadata", []banktypes.Metadata{denomMetadata}), + } + + config := CentauriConfig + config.ModifyGenesis = cosmos.ModifyGenesis(sdk47Genesis) + + cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ + { + Name: "centauri", + ChainConfig: config, + NumValidators: &numVals, + NumFullNodes: &numFullNodes, + }, + }) + + chains, err := cf.Chains(t.Name()) + require.NoError(t, err) + + chain := chains[0].(*cosmos.CosmosChain) + + ic := interchaintest.NewInterchain(). + AddChain(chain) + + ctx := context.Background() + client, network := interchaintest.DockerSetup(t) + + require.NoError(t, ic.Build(ctx, nil, interchaintest.InterchainBuildOptions{ + TestName: t.Name(), + Client: client, + NetworkID: network, + SkipPathCreation: true, + })) + t.Cleanup(func() { + _ = ic.Close() + }) + + // used in circuit + superAdmin, err := interchaintest.GetAndFundTestUserWithMnemonic(ctx, "acc0", mnemonic, genesisAmt, chain) + require.NoError(t, err) + + t.Run("authz", func(t *testing.T) { + users := interchaintest.GetAndFundTestUsers(t, ctx, "default", genesisAmt, chain, chain, chain) + testAuthz(ctx, t, chain, users) + }) + + t.Run("bank", func(t *testing.T) { + users := interchaintest.GetAndFundTestUsers(t, ctx, "default", genesisAmt, chain, chain, chain) + testBank(ctx, t, chain, users) + }) + + t.Run("distribution", func(t *testing.T) { + users := interchaintest.GetAndFundTestUsers(t, ctx, "default", genesisAmt, chain, chain, chain) + testDistribution(ctx, t, chain, users) + }) + + t.Run("feegrant", func(t *testing.T) { + users := interchaintest.GetAndFundTestUsers(t, ctx, "default", genesisAmt, chain, chain, chain, chain) + testFeeGrant(ctx, t, chain, users) + }) + + t.Run("gov", func(t *testing.T) { + users := interchaintest.GetAndFundTestUsers(t, ctx, "default", genesisAmt, chain, chain, chain) + testGov(ctx, t, chain, users) + }) + + t.Run("auth-vesting", func(t *testing.T) { + testAuth(ctx, t, chain) + testVesting(ctx, t, chain, superAdmin) + }) + + t.Run("upgrade", func(t *testing.T) { + testUpgrade(ctx, t, chain) + }) + + t.Run("staking", func(t *testing.T) { + users := interchaintest.GetAndFundTestUsers(t, ctx, "default", genesisAmt, chain, chain, chain) + testStaking(ctx, t, chain, users) + }) + + t.Run("slashing", func(t *testing.T) { + testSlashing(ctx, t, chain) + }) +} + +func testAuth(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain) { + // get gov address + govAddr, err := chain.AuthQueryModuleAddress(ctx, "gov") + require.NoError(t, err) + require.NotEmpty(t, govAddr) + + // convert gov addr to bytes + govBz, err := chain.AccAddressFromBech32(govAddr) + require.NoError(t, err) + + // convert gov bytes back to string address + strAddr, err := chain.AuthAddressBytesToString(ctx, govBz) + require.NoError(t, err) + require.EqualValues(t, govAddr, strAddr) + + // convert gov string address back to bytes + bz, err := chain.AuthAddressStringToBytes(ctx, strAddr) + require.NoError(t, err) + require.EqualValues(t, govBz, bz) + + // params + p, err := chain.AuthQueryParams(ctx) + require.NoError(t, err) + require.NotNil(t, p) + require.True(t, p.MaxMemoCharacters > 0) + + // get all module accounts + accs, err := chain.AuthQueryModuleAccounts(ctx) + require.NoError(t, err) + require.NotEmpty(t, accs) + + // get the global bech32 prefix + bech32, err := chain.AuthQueryBech32Prefix(ctx) + require.NoError(t, err) + require.EqualValues(t, baseBech32, bech32) + + // get base info about an account + accInfo, err := chain.AuthQueryAccountInfo(ctx, govAddr) + require.NoError(t, err) + require.EqualValues(t, govAddr, accInfo.Address) + +} + +// testUpgrade test the queries for upgrade information. Actual upgrades take place in other test. +func testUpgrade(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain) { + v, err := chain.UpgradeQueryAllModuleVersions(ctx) + require.NoError(t, err) + require.NotEmpty(t, v) + + // UpgradeQueryModuleVersion + authority, err := chain.UpgradeQueryAuthority(ctx) + require.NoError(t, err) + require.NotEmpty(t, authority) + + plan, err := chain.UpgradeQueryPlan(ctx) + require.NoError(t, err) + require.Nil(t, plan) + + _, err = chain.UpgradeQueryAppliedPlan(ctx, "") + require.NoError(t, err) +} + +func testAuthz(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, users []ibc.Wallet) { + granter := users[0].FormattedAddress() + grantee := users[1].FormattedAddress() + + node := chain.GetNode() + + txRes, _ := node.AuthzGrant(ctx, users[0], grantee, "generic", "--msg-type", "/cosmos.bank.v1beta1.MsgSend") + require.EqualValues(t, 0, txRes.Code) + + grants, err := chain.AuthzQueryGrants(ctx, granter, grantee, "") + require.NoError(t, err) + require.Len(t, grants, 1) + require.EqualValues(t, grants[0].Authorization.TypeUrl, "/cosmos.authz.v1beta1.GenericAuthorization") + require.Contains(t, string(grants[0].Authorization.Value), "/cosmos.bank.v1beta1.MsgSend") + + byGrantee, err := chain.AuthzQueryGrantsByGrantee(ctx, grantee, "") + require.NoError(t, err) + require.Len(t, byGrantee, 1) + require.EqualValues(t, byGrantee[0].Granter, granter) + require.EqualValues(t, byGrantee[0].Grantee, grantee) + + byGranter, err := chain.AuthzQueryGrantsByGranter(ctx, granter, "") + require.NoError(t, err) + require.Len(t, byGranter, 1) + require.EqualValues(t, byGranter[0].Granter, granter) + require.EqualValues(t, byGranter[0].Grantee, grantee) + + fmt.Printf("grants: %+v %+v %+v\n", grants, byGrantee, byGranter) + + balanceBefore, err := chain.GetBalance(ctx, granter, chain.Config().Denom) + require.NoError(t, err) + fmt.Printf("balanceBefore: %+v\n", balanceBefore) + + sendAmt := 1234 + + nestedCmd := []string{ + chain.Config().Bin, + "tx", "bank", "send", granter, grantee, fmt.Sprintf("%d%s", sendAmt, chain.Config().Denom), + "--from", granter, "--generate-only", + "--chain-id", chain.GetNode().Chain.Config().ChainID, + "--node", chain.GetNode().Chain.GetRPCAddress(), + "--home", chain.GetNode().HomeDir(), + "--keyring-backend", keyring.BackendTest, + "--output", "json", + "--yes", + } + + resp, err := node.AuthzExec(ctx, users[1], nestedCmd) + require.NoError(t, err) + require.EqualValues(t, 0, resp.Code) + + balanceAfter, err := chain.GetBalance(ctx, granter, chain.Config().Denom) + require.NoError(t, err) + + fmt.Printf("balanceAfter: %+v\n", balanceAfter) + require.EqualValues(t, balanceBefore.SubRaw(int64(sendAmt)), balanceAfter) +} + +func testBank(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, users []ibc.Wallet) { + user0 := users[0].FormattedAddress() + user1 := users[1].FormattedAddress() + user2 := users[2].FormattedAddress() + + b2, err := chain.BankQueryBalance(ctx, user1, chain.Config().Denom) + require.NoError(t, err) + + // send 1 token + sendAmt := int64(1) + _, err = sendTokens(ctx, chain, users[0], users[1], "", sendAmt) + require.NoError(t, err) + + // send multiple + err = chain.GetNode().BankMultiSend(ctx, users[0].KeyName(), []string{user1, user2}, sdkmath.NewInt(sendAmt), chain.Config().Denom) + require.NoError(t, err) + + // == balances == + // sendAmt*2 because of the multisend as well + b2New, err := chain.GetBalance(ctx, user1, chain.Config().Denom) + require.NoError(t, err) + require.Equal(t, b2.Add(sdkmath.NewInt(sendAmt*2)), b2New) + + b2All, err := chain.BankQueryAllBalances(ctx, user1) + require.NoError(t, err) + require.Equal(t, b2New, b2All.AmountOf(chain.Config().Denom)) + + // == spendable balances == + spendableBal, err := chain.BankQuerySpendableBalance(ctx, user0, chain.Config().Denom) + require.NoError(t, err) + + spendableBals, err := chain.BankQuerySpendableBalances(ctx, user0) + require.NoError(t, err) + require.Equal(t, spendableBal.Amount, spendableBals.AmountOf(chain.Config().Denom)) + + // == metadata == + meta, err := chain.BankQueryDenomMetadata(ctx, chain.Config().Denom) + require.NoError(t, err) + + meta2, err := chain.BankQueryDenomMetadataByQueryString(ctx, chain.Config().Denom) + require.NoError(t, err) + require.EqualValues(t, meta, meta2) + + allMeta, err := chain.BankQueryDenomsMetadata(ctx) + require.NoError(t, err) + require.Len(t, allMeta, 1) + require.EqualValues(t, allMeta[0].Display, meta.Display) + + // == params == + params, err := chain.BankQueryParams(ctx) + require.NoError(t, err) + require.True(t, params.DefaultSendEnabled) + + sendEnabled, err := chain.BankQuerySendEnabled(ctx, []string{chain.Config().Denom}) + require.NoError(t, err) + require.Len(t, sendEnabled, 0) + + // == supply == + supply, err := chain.BankQueryTotalSupply(ctx) + require.NoError(t, err) + + supplyOf, err := chain.BankQueryTotalSupplyOf(ctx, chain.Config().Denom) + require.NoError(t, err) + require.True(t, supplyOf.IsGTE(sdk.NewCoin(chain.Config().Denom, supply.AmountOf(chain.Config().Denom)))) + + // == denom owner == + denomOwner, err := chain.BankQueryDenomOwners(ctx, chain.Config().Denom) + require.NoError(t, err) + + found := false + for _, owner := range denomOwner { + if owner.Address == user0 { + found = true + break + } + } + require.True(t, found) +} + +func testDistribution(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, users []ibc.Wallet) { + var err error + node := chain.GetNode() + err = testutil.WaitForBlocks(ctx, 10, node) + + acc := authtypes.NewModuleAddress("distribution") + require := require.New(t) + + vals, err := chain.StakingQueryValidators(ctx, stakingtypes.Bonded.String()) + require.NoError(err) + fmt.Printf("validators: %+v\n", vals) + + del, err := chain.StakingQueryDelegationsTo(ctx, vals[0].OperatorAddress) + require.NoError(err) + + delAddr := del[0].Delegation.DelegatorAddress + valAddr := del[0].Delegation.ValidatorAddress + + newWithdrawAddr := "pica1hj83l3auyqgy5qcp52l6sp2e67xwq9xxun76km" + + t.Run("misc queries", func(t *testing.T) { + slashes, err := chain.DistributionQueryValidatorSlashes(ctx, valAddr) + require.NoError(err) + require.EqualValues(0, len(slashes)) + + valDistInfo, err := chain.DistributionQueryValidatorDistributionInfo(ctx, valAddr) + require.NoError(err) + fmt.Printf("valDistInfo: %+v\n", valDistInfo) + require.EqualValues(1, valDistInfo.Commission.Len()) + + valOutRewards, err := chain.DistributionQueryValidatorOutstandingRewards(ctx, valAddr) + require.NoError(err) + require.EqualValues(1, valOutRewards.Rewards.Len()) + + params, err := chain.DistributionQueryParams(ctx) + require.NoError(err) + require.True(params.WithdrawAddrEnabled) + + comm, err := chain.DistributionQueryCommission(ctx, valAddr) + require.NoError(err) + require.EqualValues(chain.Config().Denom, comm.Commission[0].Denom) + }) + + t.Run("withdraw-all-rewards", func(t *testing.T) { + err = node.StakingDelegate(ctx, users[2].KeyName(), valAddr, fmt.Sprintf("%d%s", uint64(100*math.Pow10(6)), chain.Config().Denom)) + require.NoError(err) + + before, err := chain.BankQueryBalance(ctx, acc.String(), chain.Config().Denom) + require.NoError(err) + fmt.Printf("before: %+v\n", before) + + err = node.DistributionWithdrawAllRewards(ctx, users[2].KeyName()) + require.NoError(err) + + after, err := chain.BankQueryBalance(ctx, acc.String(), chain.Config().Denom) + require.NoError(err) + fmt.Printf("after: %+v\n", after) + require.True(after.GT(before)) + }) + + t.Run("fund-pools", func(t *testing.T) { + bal, err := chain.BankQueryBalance(ctx, acc.String(), chain.Config().Denom) + require.NoError(err) + fmt.Printf("CP balance: %+v\n", bal) + + amount := uint64(9_000 * math.Pow10(6)) + + err = node.DistributionFundCommunityPool(ctx, users[0].KeyName(), fmt.Sprintf("%d%s", amount, chain.Config().Denom)) + require.NoError(err) + + err = node.DistributionFundValidatorRewardsPool(ctx, users[0].KeyName(), valAddr, fmt.Sprintf("%d%s", uint64(100*math.Pow10(6)), chain.Config().Denom)) + require.NoError(err) + + bal2, err := chain.BankQueryBalance(ctx, acc.String(), chain.Config().Denom) + require.NoError(err) + fmt.Printf("New CP balance: %+v\n", bal2) // 9147579661 + + require.True(bal2.Sub(bal).GT(sdkmath.NewInt(int64(amount)))) + + // queries + coins, err := chain.DistributionQueryCommunityPool(ctx) + require.NoError(err) + require.True(coins.AmountOf(chain.Config().Denom).GT(sdkmath.LegacyNewDec(int64(amount)))) + }) + + t.Run("set-custiom-withdraw-address", func(t *testing.T) { + err = node.DistributionSetWithdrawAddr(ctx, users[0].KeyName(), newWithdrawAddr) + require.NoError(err) + + withdrawAddr, err := chain.DistributionQueryDelegatorWithdrawAddress(ctx, users[0].FormattedAddress()) + require.NoError(err) + require.EqualValues(withdrawAddr, newWithdrawAddr) + }) + + t.Run("delegator", func(t *testing.T) { + delRewards, err := chain.DistributionQueryDelegationTotalRewards(ctx, delAddr) + require.NoError(err) + r := delRewards.Rewards[0] + require.EqualValues(valAddr, r.ValidatorAddress) + require.EqualValues(chain.Config().Denom, r.Reward[0].Denom) + + delegatorVals, err := chain.DistributionQueryDelegatorValidators(ctx, delAddr) + require.NoError(err) + require.EqualValues(valAddr, delegatorVals.Validators[0]) + + rewards, err := chain.DistributionQueryRewards(ctx, delAddr, valAddr) + require.NoError(err) + require.EqualValues(1, rewards.Len()) + }) +} + +func testFeeGrant(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, users []ibc.Wallet) { + var err error + node := chain.GetNode() + + denom := chain.Config().Denom + + t.Run("successful grant and queries", func(t *testing.T) { + granter := users[0] + grantee := users[1] + + err = node.FeeGrant(ctx, granter.KeyName(), grantee.FormattedAddress(), fmt.Sprintf("%d%s", 1000, chain.Config().Denom), []string{"/cosmos.bank.v1beta1.MsgSend"}, time.Now().Add(time.Hour*24*365)) + require.NoError(t, err) + + g, err := chain.FeeGrantQueryAllowance(ctx, granter.FormattedAddress(), grantee.FormattedAddress()) + require.NoError(t, err) + fmt.Printf("g: %+v\n", g) + require.EqualValues(t, granter.FormattedAddress(), g.Granter) + require.EqualValues(t, grantee.FormattedAddress(), g.Grantee) + require.EqualValues(t, "/cosmos.feegrant.v1beta1.AllowedMsgAllowance", g.Allowance.TypeUrl) + require.Contains(t, string(g.Allowance.Value), "/cosmos.bank.v1beta1.MsgSend") + + all, err := chain.FeeGrantQueryAllowances(ctx, grantee.FormattedAddress()) + require.NoError(t, err) + require.Len(t, all, 1) + require.EqualValues(t, granter.FormattedAddress(), all[0].Granter) + + all2, err := chain.FeeGrantQueryAllowancesByGranter(ctx, granter.FormattedAddress()) + require.NoError(t, err) + require.Len(t, all2, 1) + require.EqualValues(t, grantee.FormattedAddress(), all2[0].Grantee) + }) + + t.Run("successful execution", func(t *testing.T) { + granter2 := users[2] + grantee2 := users[3] + + err = node.FeeGrant(ctx, granter2.KeyName(), grantee2.FormattedAddress(), fmt.Sprintf("%d%s", 100_000, denom), nil, time.Unix(0, 0)) + require.NoError(t, err) + + bal, err := chain.BankQueryBalance(ctx, granter2.FormattedAddress(), denom) + require.NoError(t, err) + + fee := 500 + sendAmt := 501 + sendCoin := fmt.Sprintf("%d%s", sendAmt, denom) + feeCoin := fmt.Sprintf("%d%s", fee, denom) + + _, err = node.ExecTx(ctx, + grantee2.KeyName(), "bank", "send", grantee2.KeyName(), granter2.FormattedAddress(), sendCoin, + "--fees", feeCoin, "--fee-granter", granter2.FormattedAddress(), + ) + require.NoError(t, err) + + newBal, err := chain.BankQueryBalance(ctx, granter2.FormattedAddress(), denom) + require.NoError(t, err) + require.EqualValues(t, bal.AddRaw(int64(sendAmt-fee)), newBal) + }) +} + +func testGov(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, users []ibc.Wallet) { + node := chain.GetNode() + + govModule := "pica10d07y265gmmuvt4z0w9aw880jnsr700jp7sqj5" + coin := sdk.NewCoin(chain.Config().Denom, sdkmath.NewInt(1)) + + bankMsg := &banktypes.MsgSend{ + FromAddress: govModule, + ToAddress: users[1].FormattedAddress(), + Amount: sdk.NewCoins(coin), + } + + // submit governance proposal + title := "Test Proposal" + prop, err := chain.BuildProposal([]cosmos.ProtoMessage{bankMsg}, title, title+" Summary", "none", "500"+chain.Config().Denom, govModule, false) + require.NoError(t, err) + + _, err = node.GovSubmitProposal(ctx, users[0].KeyName(), prop) + require.NoError(t, err) + + proposal, err := chain.GovQueryProposalV1(ctx, 1) + require.NoError(t, err) + require.EqualValues(t, proposal.Title, title) + + // vote on the proposal + err = node.VoteOnProposal(ctx, users[0].KeyName(), 1, "yes") + require.NoError(t, err) + + v, err := chain.GovQueryVote(ctx, 1, users[0].FormattedAddress()) + require.NoError(t, err) + require.EqualValues(t, v.Options[0].Option, govv1.VoteOption_VOTE_OPTION_YES) + + // pass vote with all validators + err = chain.VoteOnProposalAllValidators(ctx, "1", "yes") + require.NoError(t, err) + + // GovQueryProposalsV1 + proposals, err := chain.GovQueryProposalsV1(ctx, govv1.ProposalStatus_PROPOSAL_STATUS_VOTING_PERIOD) + require.NoError(t, err) + require.Len(t, proposals, 1) + + require.NoError(t, testutil.WaitForBlocks(ctx, 10, chain)) + + // Proposal fails due to gov not having any funds + proposals, err = chain.GovQueryProposalsV1(ctx, govv1.ProposalStatus_PROPOSAL_STATUS_FAILED) + require.NoError(t, err) + require.Len(t, proposals, 1) +} + +func testSlashing(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain) { + p, err := chain.SlashingQueryParams(ctx) + require.NoError(t, err) + require.NotNil(t, p) + + infos, err := chain.SlashingQuerySigningInfos(ctx) + require.NoError(t, err) + require.NotEmpty(t, infos) + + si, err := chain.SlashingQuerySigningInfo(ctx, infos[0].Address) + require.NoError(t, err) + require.NotNil(t, si) +} + +func testStaking(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, users []ibc.Wallet) { + vals, err := chain.StakingQueryValidators(ctx, stakingtypes.Bonded.String()) + require.NoError(t, err) + require.NotEmpty(t, vals) + + val := vals[0].OperatorAddress + user := users[0].FormattedAddress() + + t.Run("query validators", func(t *testing.T) { + valInfo, err := chain.StakingQueryValidator(ctx, val) + require.NoError(t, err) + require.EqualValues(t, val, valInfo.OperatorAddress) + require.EqualValues(t, stakingtypes.Bonded.String(), valInfo.Status.String()) + + del, err := chain.StakingQueryDelegationsTo(ctx, val) + require.NoError(t, err) + require.NotEmpty(t, del) + + del0 := del[0].Delegation.DelegatorAddress + + allDels, err := chain.StakingQueryDelegations(ctx, del0) + require.NoError(t, err) + require.NotEmpty(t, allDels) + + singleDel, err := chain.StakingQueryDelegation(ctx, val, del0) + require.NoError(t, err) + require.EqualValues(t, del0, singleDel.Delegation.DelegatorAddress) + + // StakingQueryDelegatorValidator + delVal, err := chain.StakingQueryDelegatorValidator(ctx, del0, val) + require.NoError(t, err) + require.True(t, delVal.OperatorAddress == val) + + delVals, err := chain.StakingQueryDelegatorValidators(ctx, del0) + require.NoError(t, err) + require.NotEmpty(t, delVals) + require.True(t, delVals[0].OperatorAddress == val) + + }) + + t.Run("misc", func(t *testing.T) { + params, err := chain.StakingQueryParams(ctx) + require.NoError(t, err) + require.EqualValues(t, "stake", params.BondDenom) + + pool, err := chain.StakingQueryPool(ctx) + require.NoError(t, err) + require.True(t, pool.BondedTokens.GT(sdkmath.NewInt(0))) + + height, err := chain.Height(ctx) + require.NoError(t, err) + + searchHeight := int64(height - 1) + + hi, err := chain.StakingQueryHistoricalInfo(ctx, searchHeight) + require.NoError(t, err) + require.EqualValues(t, searchHeight, hi.Header.Height) + }) + + t.Run("delegations", func(t *testing.T) { + node := chain.GetNode() + + err := node.StakingDelegate(ctx, users[0].KeyName(), val, "1000"+chain.Config().Denom) + require.NoError(t, err) + + dels, err := chain.StakingQueryDelegations(ctx, users[0].FormattedAddress()) + require.NoError(t, err) + found := false + for _, d := range dels { + if d.Balance.Amount.Equal(sdkmath.NewInt(1000)) { + found = true + break + } + } + require.True(t, found) + + // unbond + err = node.StakingUnbond(ctx, users[0].KeyName(), val, "25"+chain.Config().Denom) + require.NoError(t, err) + + unbonding, err := chain.StakingQueryUnbondingDelegation(ctx, user, val) + require.NoError(t, err) + require.EqualValues(t, user, unbonding.DelegatorAddress) + require.EqualValues(t, val, unbonding.ValidatorAddress) + + height := unbonding.Entries[0].CreationHeight + + unbondings, err := chain.StakingQueryUnbondingDelegations(ctx, user) + require.NoError(t, err) + require.NotEmpty(t, unbondings) + require.EqualValues(t, user, unbondings[0].DelegatorAddress) + + // StakingQueryUnbondingDelegationsFrom + unbondingsFrom, err := chain.StakingQueryUnbondingDelegationsFrom(ctx, val) + require.NoError(t, err) + require.NotEmpty(t, unbondingsFrom) + require.EqualValues(t, user, unbondingsFrom[0].DelegatorAddress) + + // StakingCancelUnbond + err = node.StakingCancelUnbond(ctx, user, val, "25"+chain.Config().Denom, height) + require.NoError(t, err) + + // ensure unbonding delegation is gone + unbondings, err = chain.StakingQueryUnbondingDelegations(ctx, user) + require.NoError(t, err) + require.Empty(t, unbondings) + }) +} + +func testVesting(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, admin ibc.Wallet) { + t.Parallel() + + var err error + var acc string + node := chain.GetNode() + + currentUnixSeconds := time.Now().Unix() + endTime := currentUnixSeconds + 60 + + t.Run("normal vesting account", func(t *testing.T) { + acc = "pica1w8arfu23uygwse72ym3krk2nhntlgdfv97pez9" + + err = node.VestingCreateAccount(ctx, admin.KeyName(), acc, "111stake", endTime) + require.NoError(t, err) + + res, err := chain.AuthQueryAccount(ctx, acc) + require.NoError(t, err) + require.EqualValues(t, "/cosmos.vesting.v1beta1.ContinuousVestingAccount", res.TypeUrl) + chain.AuthPrintAccountInfo(chain, res) + }) + + t.Run("perm locked account", func(t *testing.T) { + acc = "pica135e3r3l5333094zd37kw8s7htn7087pr8s9mj7" + + err = node.VestingCreatePermanentLockedAccount(ctx, admin.KeyName(), acc, "112stake") + require.NoError(t, err) + + res, err := chain.AuthQueryAccount(ctx, acc) + require.NoError(t, err) + require.EqualValues(t, "/cosmos.vesting.v1beta1.PermanentLockedAccount", res.TypeUrl) + chain.AuthPrintAccountInfo(chain, res) + }) + + t.Run("periodic account", func(t *testing.T) { + acc = "pica1hkar47a0ysml3fhw2jgyrnrvwq9z8tk7ead5k9" + + err = node.VestingCreatePeriodicAccount(ctx, admin.KeyName(), acc, vestingcli.VestingData{ + StartTime: currentUnixSeconds, + Periods: []vestingcli.InputPeriod{ + { + Coins: "100stake", + Length: 30, // 30 seconds + }, + { + Coins: "101stake", + Length: 30, // 30 seconds + }, + { + Coins: "102stake", + Length: 30, // 30 seconds + }, + }, + }) + require.NoError(t, err) + + res, err := chain.AuthQueryAccount(ctx, acc) + require.NoError(t, err) + require.EqualValues(t, "/cosmos.vesting.v1beta1.PeriodicVestingAccount", res.TypeUrl) + chain.AuthPrintAccountInfo(chain, res) + }) + + t.Run("Base Account", func(t *testing.T) { + res, err := chain.AuthQueryAccount(ctx, admin.FormattedAddress()) + require.NoError(t, err) + require.EqualValues(t, "/cosmos.auth.v1beta1.BaseAccount", res.TypeUrl) + chain.AuthPrintAccountInfo(chain, res) + }) +} diff --git a/tests/interchaintest/chain_miscellaneous_test.go b/tests/interchaintest/chain_miscellaneous_test.go new file mode 100644 index 000000000..9e7a7a1e9 --- /dev/null +++ b/tests/interchaintest/chain_miscellaneous_test.go @@ -0,0 +1,353 @@ +package interchaintest + +import ( + "context" + "fmt" + "testing" + + "cosmossdk.io/math" + + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + + sdk "github.com/cosmos/cosmos-sdk/types" + testutil "github.com/cosmos/cosmos-sdk/types/module/testutil" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" +) + +var ( + numVals = 1 + numFullNodes = 0 +) + +func TestICTestMiscellaneous(t *testing.T) { + if testing.Short() { + t.Skip("skipping in short mode") + } + + cosmos.SetSDKConfig("pica") + + sdk47Genesis := []cosmos.GenesisKV{ + cosmos.NewGenesisKV("app_state.gov.params.voting_period", "15s"), + cosmos.NewGenesisKV("app_state.gov.params.max_deposit_period", "10s"), + cosmos.NewGenesisKV("app_state.gov.params.min_deposit.0.denom", "ppica"), + cosmos.NewGenesisKV("app_state.gov.params.min_deposit.0.amount", "1"), + } + + config := CentauriConfig + config.ModifyGenesis = cosmos.ModifyGenesis(sdk47Genesis) + + cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ + { + Name: "centauri", + ChainConfig: config, + NumValidators: &numVals, + NumFullNodes: &numFullNodes, + }, + }) + + chains, err := cf.Chains(t.Name()) + require.NoError(t, err) + + chain := chains[0].(*cosmos.CosmosChain) + + ic := interchaintest.NewInterchain(). + AddChain(chain) + + ctx := context.Background() + client, network := interchaintest.DockerSetup(t) + + require.NoError(t, ic.Build(ctx, nil, interchaintest.InterchainBuildOptions{ + TestName: t.Name(), + Client: client, + NetworkID: network, + SkipPathCreation: true, + })) + t.Cleanup(func() { + _ = ic.Close() + }) + + users := interchaintest.GetAndFundTestUsers(t, ctx, "default", math.NewInt(10_000_000_000), chain, chain) + + testWalletKeys(ctx, t, chain) + testSendingTokens(ctx, t, chain, users) + testFindTxs(ctx, t, chain, users) // not supported with CometMock + testPollForBalance(ctx, t, chain, users) + testRangeBlockMessages(ctx, t, chain, users) + testBroadcaster(ctx, t, chain, users) + testQueryCmd(ctx, t, chain) + testHasCommand(ctx, t, chain) + testFailedCWExecute(ctx, t, chain, users) + testAddingNode(ctx, t, chain) + testGetGovernanceAddress(ctx, t, chain) + testTXFailsOnBlockInclusion(ctx, t, chain, users) +} + +func wasmEncoding() *testutil.TestEncodingConfig { + cfg := cosmos.DefaultEncoding() + wasmtypes.RegisterInterfaces(cfg.InterfaceRegistry) + return &cfg +} + +func testFailedCWExecute(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, users []ibc.Wallet) { + user := users[0] + keyName := user.KeyName() + + codeId, err := chain.StoreContract(ctx, keyName, "contracts/cw_template.wasm") + if err != nil { + t.Fatal(err) + } + + contractAddr, err := chain.InstantiateContract(ctx, keyName, codeId, `{"count":0}`, true) + if err != nil { + t.Fatal(err) + } + + // execute on the contract with the wrong message (err) + txResp, err := chain.ExecuteContract(ctx, keyName, contractAddr, `{"not_a_func":{}}`) + require.Error(t, err) + fmt.Printf("txResp.RawLog: %+v\n", txResp.RawLog) + fmt.Printf("err: %+v\n", err) + require.Contains(t, err.Error(), "failed to execute message") +} + +func testWalletKeys(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain) { + // create a general key + randKey := "randkey123" + err := chain.CreateKey(ctx, randKey) + require.NoError(t, err) + + // verify key was created properly + _, err = chain.GetAddress(ctx, randKey) + require.NoError(t, err) + + // recover a key + // juno1hj5fveer5cjtn4wd6wstzugjfdxzl0xps73ftl + keyName := "key-abc" + testMnemonic := "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" + wallet, err := chain.BuildWallet(ctx, keyName, testMnemonic) + require.NoError(t, err) + + // verify + addr, err := chain.GetAddress(ctx, keyName) + require.NoError(t, err) + require.Equal(t, wallet.Address(), addr) + + tn := chain.Validators[0] + a, err := tn.KeyBech32(ctx, "key-abc", "val") + require.NoError(t, err) + require.Equal(t, a, "picavaloper1hj5fveer5cjtn4wd6wstzugjfdxzl0xpaf78xu") + + a, err = tn.KeyBech32(ctx, "key-abc", "acc") + require.NoError(t, err) + require.Equal(t, a, wallet.FormattedAddress()) + + a, err = tn.AccountKeyBech32(ctx, "key-abc") + require.NoError(t, err) + require.Equal(t, a, wallet.FormattedAddress()) +} + +func testSendingTokens(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, users []ibc.Wallet) { + _, err := chain.GetBalance(ctx, users[0].FormattedAddress(), chain.Config().Denom) + require.NoError(t, err) + b2, err := chain.GetBalance(ctx, users[1].FormattedAddress(), chain.Config().Denom) + require.NoError(t, err) + + sendAmt := int64(1) + _, err = sendTokens(ctx, chain, users[0], users[1], "", sendAmt) + require.NoError(t, err) + + b2New, err := chain.GetBalance(ctx, users[1].FormattedAddress(), chain.Config().Denom) + require.NoError(t, err) + + require.Equal(t, b2.Add(math.NewInt(sendAmt)), b2New) +} + +func testFindTxs(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, users []ibc.Wallet) { + height, _ := chain.Height(ctx) + + _, err := sendTokens(ctx, chain, users[0], users[1], "", 1) + require.NoError(t, err) + + txs, err := chain.FindTxs(ctx, height+1) + require.NoError(t, err) + require.NotEmpty(t, txs) + require.Equal(t, txs[0].Events[0].Type, "tx") +} + +func testPollForBalance(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, users []ibc.Wallet) { + bal2, err := chain.GetBalance(ctx, users[1].FormattedAddress(), chain.Config().Denom) + require.NoError(t, err) + + amt := ibc.WalletAmount{ + Address: users[1].FormattedAddress(), + Denom: chain.Config().Denom, + Amount: math.NewInt(1), + } + + delta := int64(3) + + ch := make(chan error) + go func() { + new := amt + new.Amount = bal2.Add(math.NewInt(1)) + ch <- cosmos.PollForBalance(ctx, chain, delta, new) + }() + + err = chain.SendFunds(ctx, users[0].KeyName(), amt) + require.NoError(t, err) + require.NoError(t, <-ch) +} + +func testRangeBlockMessages(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, users []ibc.Wallet) { + height, _ := chain.Height(ctx) + + _, err := sendTokens(ctx, chain, users[0], users[1], "", 1) + require.NoError(t, err) + + var bankMsgs []*banktypes.MsgSend + err = cosmos.RangeBlockMessages(ctx, chain.Config().EncodingConfig.InterfaceRegistry, chain.Validators[0].Client, height+1, func(msg sdk.Msg) bool { + found, ok := msg.(*banktypes.MsgSend) + if ok { + bankMsgs = append(bankMsgs, found) + } + return false + }) + require.NoError(t, err) +} + +func testAddingNode(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain) { + // This should be tested last or else Txs will fail on the new full node. + nodesAmt := len(chain.Nodes()) + chain.AddFullNodes(ctx, nil, 1) + require.Equal(t, nodesAmt+1, len(chain.Nodes())) +} + +func testBroadcaster(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, users []ibc.Wallet) { + from := users[0].FormattedAddress() + addr1 := "pica190g5j8aszqhvtg7cprmev8xcxs6csra7tak0s2" + addr2 := "pica1a53udazy8ayufvy0s434pfwjcedzqv34dspq0f" + + c1 := sdk.NewCoins(sdk.NewCoin(chain.Config().Denom, math.NewInt(1))) + c2 := sdk.NewCoins(sdk.NewCoin(chain.Config().Denom, math.NewInt(2))) + + b := cosmos.NewBroadcaster(t, chain) + + in := banktypes.Input{ + Address: from, + Coins: c1.Add(c2[0]), + } + out := []banktypes.Output{ + { + Address: addr1, + Coins: c1, + }, + { + Address: addr2, + Coins: c2, + }, + } + + txResp, err := cosmos.BroadcastTx( + ctx, + b, + users[0], + banktypes.NewMsgMultiSend(in, out), + ) + require.NoError(t, err) + require.NotEmpty(t, txResp.TxHash) + fmt.Printf("txResp: %+v\n", txResp) + + updatedBal1, err := chain.GetBalance(ctx, addr1, chain.Config().Denom) + require.NoError(t, err) + require.Equal(t, math.NewInt(1), updatedBal1) + + updatedBal2, err := chain.GetBalance(ctx, addr2, chain.Config().Denom) + require.NoError(t, err) + require.Equal(t, math.NewInt(2), updatedBal2) + + txResp, err = cosmos.BroadcastTx( + ctx, + b, + users[0], + banktypes.NewMsgMultiSend(banktypes.Input{ + Address: addr1, + Coins: c1.Add(c2[0]), + }, out), + ) + require.Error(t, err) +} + +func testQueryCmd(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain) { + tn := chain.Validators[0] + stdout, stderr, err := tn.ExecQuery(ctx, "slashing", "params") + require.NoError(t, err) + require.NotEmpty(t, stdout) + require.Empty(t, stderr) +} + +func testHasCommand(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain) { + tn := chain.Validators[0] + res := tn.HasCommand(ctx, "query") + require.True(t, res) + + if tn.IsAboveSDK47(ctx) { + require.True(t, tn.HasCommand(ctx, "genesis")) + } else { + // 45 does not have this + require.False(t, tn.HasCommand(ctx, "genesis")) + } + + require.True(t, tn.HasCommand(ctx, "tx", "ibc")) + require.True(t, tn.HasCommand(ctx, "q", "ibc")) + require.True(t, tn.HasCommand(ctx, "keys")) + require.True(t, tn.HasCommand(ctx, "help")) + require.True(t, tn.HasCommand(ctx, "tx", "bank", "send")) + + require.False(t, tn.HasCommand(ctx, "tx", "bank", "send2notrealcmd")) + require.False(t, tn.HasCommand(ctx, "incorrectcmd")) +} + +func testGetGovernanceAddress(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain) { + govAddr, err := chain.GetGovernanceAddress(ctx) + require.NoError(t, err) + _, err = chain.AccAddressFromBech32(govAddr) + require.NoError(t, err) +} + +func testTXFailsOnBlockInclusion(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, users []ibc.Wallet) { + // this isn't a real validator, but is well formed, so it will only fail once a validator checks the staking transaction + fakeValoper, err := chain.GetNode().KeyBech32(ctx, users[0].KeyName(), "val") + require.NoError(t, err) + + txHash, err := chain.GetNode().ExecTx(ctx, users[0].FormattedAddress(), + "staking", "delegate", fakeValoper, "100"+chain.Config().Denom) + transaction, err := chain.GetTransaction(txHash) + require.NoError(t, err) + require.Equal(t, "failed to execute message; message index: 0: validator does not exist", transaction.RawLog) +} + +// helpers +func sendTokens(ctx context.Context, chain *cosmos.CosmosChain, from, to ibc.Wallet, token string, amount int64) (ibc.WalletAmount, error) { + if token == "" { + token = chain.Config().Denom + } + + sendAmt := ibc.WalletAmount{ + Address: to.FormattedAddress(), + Denom: token, + Amount: math.NewInt(amount), + } + err := chain.SendFunds(ctx, from.KeyName(), sendAmt) + return sendAmt, err +} + +func validateBalance(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, user ibc.Wallet, tfDenom string, expected int64) { + balance, err := chain.GetBalance(ctx, user.FormattedAddress(), tfDenom) + require.NoError(t, err) + require.Equal(t, balance, math.NewInt(expected)) +} diff --git a/tests/interchaintest/contracts/cw_template.wasm b/tests/interchaintest/contracts/cw_template.wasm new file mode 100644 index 0000000000000000000000000000000000000000..909cbdd198caf9ececdf0c288ceda0b1a4d912f2 GIT binary patch literal 132664 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 M(t{<21#`lG0|9DE)c^nh literal 0 HcmV?d00001 diff --git a/x/mint/abci.go b/x/mint/abci.go index d322e6723..6fc61d605 100644 --- a/x/mint/abci.go +++ b/x/mint/abci.go @@ -1,6 +1,7 @@ package mint import ( + "context" "time" "github.com/cosmos/cosmos-sdk/telemetry" @@ -11,37 +12,40 @@ import ( ) // BeginBlocker mints new tokens for the previous block. -func BeginBlocker(ctx sdk.Context, k keeper.Keeper, ic types.InflationCalculationFn) { +func BeginBlocker(ctx context.Context, k keeper.Keeper, ic types.InflationCalculationFn) error { defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) + sdkCtx := sdk.UnwrapSDKContext(ctx) + // fetch stored minter & params - minter := k.GetMinter(ctx) - params := k.GetParams(ctx) + minter := k.GetMinter(sdkCtx) + params := k.GetParams(sdkCtx) // recalculate inflation rate - totalStakingSupply, _ := k.StakingTokenSupply(ctx) - bondedRatio, _ := k.BondedRatio(ctx) - minter.Inflation = ic(ctx, minter, params, bondedRatio, totalStakingSupply) + totalStakingSupply, _ := k.StakingTokenSupply(sdkCtx) + bondedRatio, _ := k.BondedRatio(sdkCtx) + minter.Inflation = ic(sdkCtx, minter, params, bondedRatio, totalStakingSupply) minter.AnnualProvisions = minter.NextAnnualProvisions(params, totalStakingSupply) - k.SetMinter(ctx, minter) + k.SetMinter(sdkCtx, minter) // calculate how many we would mint, but we dont mint them, we take them from the prefunded account mintedCoin := minter.BlockProvision(params) mintedCoins := sdk.NewCoins(mintedCoin) // send the minted coins to the fee collector account - err := k.AddCollectedFees(ctx, mintedCoins) + err := k.AddCollectedFees(sdkCtx, mintedCoins) if err != nil { - k.Logger(ctx).Info("Not enough incentive tokens in the mint pool to distribute") + k.Logger(sdkCtx).Info("Not enough incentive tokens in the mint pool to distribute") } if mintedCoin.Amount.IsInt64() { defer telemetry.ModuleSetGauge(types.ModuleName, float32(mintedCoin.Amount.Int64()), "minted_tokens") } - ctx.EventManager().EmitEvent( + sdkCtx.EventManager().EmitEvent( sdk.NewEvent( types.EventTypeReward, sdk.NewAttribute(sdk.AttributeKeyAmount, mintedCoin.Amount.String()), ), ) + return nil } diff --git a/x/mint/module.go b/x/mint/module.go index 194fc198c..5a2711eae 100644 --- a/x/mint/module.go +++ b/x/mint/module.go @@ -149,6 +149,11 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw // ConsensusVersion implements AppModule/ConsensusVersion. func (AppModule) ConsensusVersion() uint64 { return 1 } +// BeginBlock returns the begin blocker for the mint module. +func (am AppModule) BeginBlock(ctx context.Context) error { + return BeginBlocker(ctx, am.keeper, am.inflationCalculator) +} + // AppModuleSimulation functions // GenerateGenesisState creates a randomized GenState of the mint module. func (AppModule) GenerateGenesisState(simState *module.SimulationState) { diff --git a/x/ratelimit/keeper/abci.go b/x/ratelimit/keeper/abci.go index a3789e223..e05e79d55 100644 --- a/x/ratelimit/keeper/abci.go +++ b/x/ratelimit/keeper/abci.go @@ -1,6 +1,7 @@ package keeper import ( + "context" "fmt" "time" @@ -11,25 +12,27 @@ import ( ) // BeginBlocker of epochs module. -func (k Keeper) BeginBlocker(ctx sdk.Context) { +func (k Keeper) BeginBlocker(ctx context.Context) error { + sdkCtx := sdk.UnwrapSDKContext(ctx) + defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) - k.IterateEpochInfo(ctx, func(index int64, epochInfo types.EpochInfo) (stop bool) { - logger := k.Logger(ctx) + k.IterateEpochInfo(sdkCtx, func(index int64, epochInfo types.EpochInfo) (stop bool) { + logger := k.Logger(sdkCtx) // If blocktime < initial epoch start time, return - if ctx.BlockTime().Before(epochInfo.StartTime) { + if sdkCtx.BlockTime().Before(epochInfo.StartTime) { return true } // if epoch counting hasn't started, signal we need to start. shouldInitialEpochStart := !epochInfo.EpochCountingStarted epochEndTime := epochInfo.CurrentEpochStartTime.Add(epochInfo.Duration) - shouldEpochStart := (ctx.BlockTime().After(epochEndTime)) || shouldInitialEpochStart + shouldEpochStart := (sdkCtx.BlockTime().After(epochEndTime)) || shouldInitialEpochStart if !shouldEpochStart { return false } - epochInfo.CurrentEpochStartHeight = ctx.BlockHeight() + epochInfo.CurrentEpochStartHeight = sdkCtx.BlockHeight() if shouldInitialEpochStart { epochInfo.EpochCountingStarted = true @@ -37,22 +40,23 @@ func (k Keeper) BeginBlocker(ctx sdk.Context) { epochInfo.CurrentEpochStartTime = epochInfo.StartTime logger.Info(fmt.Sprintf("Starting new epoch with identifier %s epoch number %d", epochInfo.Identifier, epochInfo.CurrentEpoch)) } else { - k.AfterEpochEnd(ctx, epochInfo) + k.AfterEpochEnd(sdkCtx, epochInfo) epochInfo.CurrentEpoch++ epochInfo.CurrentEpochStartTime = epochInfo.CurrentEpochStartTime.Add(epochInfo.Duration) logger.Info(fmt.Sprintf("Starting epoch with identifier %s epoch number %d", epochInfo.Identifier, epochInfo.CurrentEpoch)) } // emit new epoch start event, set epoch info, and run BeforeEpochStart hook - ctx.EventManager().EmitEvent( + sdkCtx.EventManager().EmitEvent( sdk.NewEvent( types.EventTypeEpochStart, sdk.NewAttribute(types.AttributeEpochNumber, fmt.Sprintf("%d", epochInfo.CurrentEpoch)), sdk.NewAttribute(types.AttributeEpochStartTime, fmt.Sprintf("%d", epochInfo.CurrentEpochStartTime.Unix())), ), ) - k.setEpochInfo(ctx, epochInfo) + k.setEpochInfo(sdkCtx, epochInfo) return false }) + return nil } diff --git a/x/ratelimit/module.go b/x/ratelimit/module.go index c17e7b48c..9d5e140eb 100644 --- a/x/ratelimit/module.go +++ b/x/ratelimit/module.go @@ -136,7 +136,15 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw // ConsensusVersion implements AppModule/ConsensusVersion. func (AppModule) ConsensusVersion() uint64 { return 1 } -// AppModuleSimulation functions +// BeginBlock implements the AppModule interface +func (am AppModule) BeginBlock(ctx context.Context) error { + return am.keeper.BeginBlocker(ctx) +} + +// EndBlock implements the AppModule interface +func (am AppModule) EndBlock(_ context.Context) ([]abci.ValidatorUpdate, error) { + return []abci.ValidatorUpdate{}, nil +} // GenerateGenesisState creates a randomized GenState of the router module. func (AppModule) GenerateGenesisState(_ *module.SimulationState) {} diff --git a/x/ratelimit/relay_test.go b/x/ratelimit/relay_test.go index 855125c4f..9a8e1c554 100644 --- a/x/ratelimit/relay_test.go +++ b/x/ratelimit/relay_test.go @@ -1,6 +1,7 @@ package ratelimit_test import ( + "fmt" "testing" sdkmath "cosmossdk.io/math" @@ -390,6 +391,7 @@ func (suite *RateLimitTestSuite) TestReceiveIBCTokenWithMinRateLimitAmount() { // not receive token because catch the threshold => balances have no change gotBalance = suite.chainB.AllBalances(suite.chainB.SenderAccount.GetAddress()) + fmt.Println(expBalance.String(), gotBalance.String()) suite.Require().Equal(expBalance, gotBalance) } diff --git a/x/stakingmiddleware/keeper/genesis.go b/x/stakingmiddleware/keeper/genesis.go index c50d10dcf..c02a5a178 100644 --- a/x/stakingmiddleware/keeper/genesis.go +++ b/x/stakingmiddleware/keeper/genesis.go @@ -1,6 +1,8 @@ package keeper import ( + "fmt" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/notional-labs/composable/v6/x/stakingmiddleware/types" ) @@ -8,6 +10,7 @@ import ( // InitGenesis new stake middleware genesis func (keeper Keeper) InitGenesis(ctx sdk.Context, data *types.GenesisState) { if err := keeper.SetParams(ctx, data.Params); err != nil { + fmt.Println(err) panic(err) } } diff --git a/x/transfermiddleware/keeper/abci.go b/x/transfermiddleware/keeper/abci.go index a3f0479d8..6eaba259d 100644 --- a/x/transfermiddleware/keeper/abci.go +++ b/x/transfermiddleware/keeper/abci.go @@ -1,19 +1,24 @@ package keeper import ( + "context" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/notional-labs/composable/v6/x/transfermiddleware/types" ) // BeginBlocker of epochs module. -func (k Keeper) BeginBlocker(ctx sdk.Context) { +func (k Keeper) BeginBlocker(ctx context.Context) error { + sdkCtx := sdk.UnwrapSDKContext(ctx) + // Iterate over remove list - k.IterateRemoveListInfo(ctx, func(removeList types.RemoveParachainIBCTokenInfo) (stop bool) { + k.IterateRemoveListInfo(sdkCtx, func(removeList types.RemoveParachainIBCTokenInfo) (stop bool) { // If pass the duration, remove parachain token info - if ctx.BlockTime().After(removeList.RemoveTime) { - k.RemoveParachainIBCInfo(ctx, removeList.NativeDenom) + if sdkCtx.BlockTime().After(removeList.RemoveTime) { + k.RemoveParachainIBCInfo(sdkCtx, removeList.NativeDenom) } return false }) + return nil } diff --git a/x/transfermiddleware/module.go b/x/transfermiddleware/module.go index f02a7926b..fa016eedc 100644 --- a/x/transfermiddleware/module.go +++ b/x/transfermiddleware/module.go @@ -129,7 +129,10 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw // ConsensusVersion implements AppModule/ConsensusVersion. func (AppModule) ConsensusVersion() uint64 { return 1 } -// AppModuleSimulation functions +// BeginBlock implements the AppModule interface +func (am AppModule) BeginBlock(ctx context.Context) error { + return am.keeper.BeginBlocker(ctx) +} // GenerateGenesisState creates a randomized GenState of the router module. func (AppModule) GenerateGenesisState(_ *module.SimulationState) {} From faacee9294774a5825606381b4a78781df6e6fdc Mon Sep 17 00:00:00 2001 From: Kanstantsin Kastsevich Date: Thu, 30 May 2024 22:22:40 +0300 Subject: [PATCH 4/7] ensure accountKeeper (#528) --- custom/staking/keeper/keeper.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/custom/staking/keeper/keeper.go b/custom/staking/keeper/keeper.go index 0ddcaeeda..25ec5512a 100644 --- a/custom/staking/keeper/keeper.go +++ b/custom/staking/keeper/keeper.go @@ -26,7 +26,7 @@ type Keeper struct { authority string mintKeeper mintkeeper.Keeper distrKeeper distkeeper.Keeper - authKeeper minttypes.AccountKeeper + accountKeeper types.AccountKeeper } func (k Keeper) BlockValidatorUpdates(ctx context.Context) ([]abcicometbft.ValidatorUpdate, error) { @@ -142,6 +142,7 @@ func NewKeeper( cdc: cdc, mintKeeper: mintkeeper.Keeper{}, distrKeeper: distkeeper.Keeper{}, + accountKeeper: ak, } return &keeper } @@ -172,7 +173,7 @@ func (k Keeper) SlashWithInfractionReason(ctx context.Context, consAddr sdk.Cons if err != nil { k.Logger(ctx).Error("Failed to mint slashed coins: ", amountBurned) } else { - err = k.distrKeeper.FundCommunityPool(ctx, coins, k.authKeeper.GetModuleAddress(minttypes.ModuleName)) + err = k.distrKeeper.FundCommunityPool(ctx, coins, k.accountKeeper.GetModuleAddress(minttypes.ModuleName)) if err != nil { k.Logger(ctx).Error(fmt.Sprintf("Failed to fund community pool. Tokens minted to the staking module account: %d. ", amountBurned)) } else { From 70dbbc1746bb9c1db1e786190b03c73e1a7f5ec7 Mon Sep 17 00:00:00 2001 From: Hoa Nguyen Date: Fri, 7 Jun 2024 16:27:34 +0700 Subject: [PATCH 5/7] fix: miss handler SignMode_SIGN_MODE_TEXTUAL (#529) --- cmd/picad/cmd/root.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/cmd/picad/cmd/root.go b/cmd/picad/cmd/root.go index 810d2e0e7..1eff90f9d 100644 --- a/cmd/picad/cmd/root.go +++ b/cmd/picad/cmd/root.go @@ -5,7 +5,11 @@ import ( "io" "os" + "github.com/cosmos/cosmos-sdk/types/tx/signing" + "github.com/cosmos/cosmos-sdk/x/auth/tx" + "github.com/cosmos/cosmos-sdk/crypto/keyring" + txmodule "github.com/cosmos/cosmos-sdk/x/auth/tx/config" "cosmossdk.io/log" tmcli "github.com/cometbft/cometbft/libs/cli" @@ -91,6 +95,25 @@ func NewRootCmd() (*cobra.Command, app.EncodingConfig) { return err } + // This needs to go after ReadFromClientConfig, as that function + // sets the RPC client needed for SIGN_MODE_TEXTUAL. This sign mode + // is only available if the client is online. + if !initClientCtx.Offline { + txConfigOpts := tx.ConfigOptions{ + EnabledSignModes: append(tx.DefaultSignModes, signing.SignMode_SIGN_MODE_TEXTUAL), + TextualCoinMetadataQueryFn: txmodule.NewGRPCCoinMetadataQueryFn(initClientCtx), + } + txConfig, err := tx.NewTxConfigWithOptions( + initClientCtx.Codec, + txConfigOpts, + ) + if err != nil { + return err + } + + initClientCtx = initClientCtx.WithTxConfig(txConfig) + } + if err := client.SetCmdClientContextHandler(initClientCtx, cmd); err != nil { return err } From cd88c4ad4d061b6da9b41919d199d70834ab98fa Mon Sep 17 00:00:00 2001 From: "rust.dev" <102041955+RustNinja@users.noreply.github.com> Date: Fri, 7 Jun 2024 16:38:34 +0100 Subject: [PATCH 6/7] add testnode.sh script that allow to run locally chain with a cosmos sdk50 (#530) add testnode.sh file that allow to run locally chain with a cosmos sdk50 --- scripts/testnode.sh | 60 +++++++++++++++++---------------------------- 1 file changed, 23 insertions(+), 37 deletions(-) diff --git a/scripts/testnode.sh b/scripts/testnode.sh index 44fc57341..3d306c6b8 100755 --- a/scripts/testnode.sh +++ b/scripts/testnode.sh @@ -1,8 +1,5 @@ -#!/bin/bash - -BINARY=$1 KEY="mykey" -CHAINID="localpica" +CHAINID="centauri-1" MONIKER="localtestnet" KEYALGO="secp256k1" KEYRING="test" @@ -11,45 +8,34 @@ LOGLEVEL="info" #TRACE="--trace" TRACE="" -HOME_DIR=~/.banksy -DENOM=${2:-ppica} - +# validate dependencies are installed +command -v jq > /dev/null 2>&1 || { echo >&2 "jq not installed. More info: https://stedolan.github.io/jq/download/"; exit 1; } # remove existing daemon -rm -rf ~/.banksy* +rm -rf ~/.banksy -# $BINARY config keyring-backend $KEYRING -# $BINARY config chain-id $CHAINID +picad config keyring-backend $KEYRING +picad config chain-id $CHAINID # if $KEY exists it should be deleted -echo "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry" | $BINARY keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO --recover - -$BINARY init $MONIKER --chain-id $CHAINID > /dev/null 2>&1 - -update_test_genesis () { - # update_test_genesis '.consensus_params["block"]["max_gas"]="100000000"' - cat $HOME_DIR/config/genesis.json | jq "$1" > $HOME_DIR/config/tmp_genesis.json && mv $HOME_DIR/config/tmp_genesis.json $HOME_DIR/config/genesis.json -} - -# Allocate genesis accounts (cosmos formatted addresses) -$BINARY genesis add-genesis-account $KEY 100000000000000000000000000ppica --keyring-backend $KEYRING -$BINARY add-genesis-account centauri1hj5fveer5cjtn4wd6wstzugjfdxzl0xpzxlwgs "1000000000000000000000${DENOM}" --keyring-backend $KEYRING --home $HOME_DIR +#echo "taste shoot adapt slow truly grape gift need suggest midnight burger horn whisper hat vast aspect exit scorpion jewel axis great area awful blind" | picad keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO --recover +#echo "sense state fringe stool behind explain area quit ugly affair develop thumb clinic weasel choice atom gesture spare sea renew penalty second upon peace" | picad keys add k1 --keyring-backend $KEYRING --algo $KEYALGO --recover +echo "sense state fringe stool behind explain area quit ugly affair develop thumb clinic weasel choice atom gesture spare sea renew penalty second upon peace" | picad keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO --recover +picad init $MONIKER --chain-id $CHAINID --default-denom pica -# Sign genesis transaction -$BINARY gentx $KEY 1000000000000000000000ppica --keyring-backend $KEYRING --chain-id $CHAINID +# Allocate genesis accounts (centauri formatted addresses) +picad add-genesis-account $KEY 10000000000000000000pica,10000000000000000000atom --keyring-backend $KEYRING +#picad add-genesis-account k1 10000000000000000000pica --keyring-backend $KEYRING -update_test_genesis '.app_state["gov"]["params"]["voting_period"]="20s"' -update_test_genesis '.app_state["mint"]["params"]["mint_denom"]="'$DENOM'"' -update_test_genesis '.app_state["gov"]["params"]["min_deposit"]=[{"denom":"'$DENOM'","amount": "0"}]' -update_test_genesis '.app_state["crisis"]["constant_fee"]={"denom":"'$DENOM'","amount":"1000"}' -update_test_genesis '.app_state["staking"]["params"]["bond_denom"]="'$DENOM'"' +# Sign genesis transaction centauri1594tdya20hxz7kjenkn5w09jljyvdfk8kx5rd6 +picad gentx $KEY 100000000000000000pica --keyring-backend $KEYRING --chain-id $CHAINID # Collect genesis tx -$BINARY collect-gentxs +picad collect-gentxs # Run this to ensure everything worked and that the genesis file is setup correctly -$BINARY validate-genesis +picad validate-genesis if [[ $1 == "pending" ]]; then echo "pending mode is on, please wait for the first block committed." @@ -57,11 +43,11 @@ fi # update request max size so that we can upload the light client # '' -e is a must have params on mac, if use linux please delete before run -sed -i'' -e 's/max_body_bytes = /max_body_bytes = 1/g' ~/.banksy/config/config.toml +sed -i'' -e 's/max_body_bytes = /max_body_bytes = 1000/g' ~/.banksy/config/config.toml +sed -i'' -e 's/max_tx_bytes = /max_tx_bytes = 1000/g' ~/.banksy/config/config.toml +#sed -i'' -e 's/max-recv-msg-size = /max-recv-msg-size = 1000/g' ~/.banksy/config/app.toml +cat $HOME/.banksy/config/genesis.json | jq '.app_state["gov"]["params"]["voting_period"]="45s"' > $HOME/.banksy/config/tmp_genesis.json && mv $HOME/.banksy/config/tmp_genesis.json $HOME/.banksy/config/genesis.json # Start the node (remove the --pruning=nothing flag if historical queries are not needed) -<<<<<<< HEAD -$BINARY start --pruning=nothing --minimum-gas-prices=0.0001ppica --rpc.laddr tcp://0.0.0.0:26657 -======= -# centaurid start --pruning=nothing --minimum-gas-prices=0.0001ppica --rpc.laddr tcp://0.0.0.0:26657 ->>>>>>> develop2 +picad start --pruning=nothing --minimum-gas-prices=0pica \ + --rpc.laddr tcp://127.0.0.1:36657 --p2p.laddr tcp://0.0.0.0:36656 --api.address tcp://localhost:2317 --rpc.pprof_laddr tcp://127.0.0.1:7060 \ No newline at end of file From dc78b1926dd3999b9ea9fbe3f63924882bdacdd8 Mon Sep 17 00:00:00 2001 From: Khanh Hoa Date: Tue, 11 Jun 2024 09:23:11 +0700 Subject: [PATCH 7/7] fix: some issues when update to sdk50 --- app/keepers/keepers.go | 3 ++- custom/custompfm/keeper/keeper.go | 25 +++++++++++++----------- x/ibctransfermiddleware/keeper/keeper.go | 6 ++++++ 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/app/keepers/keepers.go b/app/keepers/keepers.go index 1abf29e06..7056d3424 100644 --- a/app/keepers/keepers.go +++ b/app/keepers/keepers.go @@ -79,7 +79,6 @@ import ( custombankkeeper "github.com/notional-labs/composable/v6/custom/bank/keeper" - pfm "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward" pfmkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/keeper" pfmtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/types" @@ -403,6 +402,8 @@ func (appKeepers *AppKeepers) InitNormalKeepers( 0, pfmkeeper.DefaultForwardTransferPacketTimeoutTimestamp, pfmkeeper.DefaultRefundTransferPacketTimeoutTimestamp, + &appKeepers.IbcTransferMiddlewareKeeper, + &appKeepers.BankKeeper, ) ratelimitMiddlewareStack := ratelimitmodule.NewIBCMiddleware(appKeepers.RatelimitKeeper, ibcMiddlewareStack) hooksTransferMiddleware := ibc_hooks.NewIBCMiddleware(ratelimitMiddlewareStack, &appKeepers.HooksICS4Wrapper) diff --git a/custom/custompfm/keeper/keeper.go b/custom/custompfm/keeper/keeper.go index d5559f546..30791dc7d 100644 --- a/custom/custompfm/keeper/keeper.go +++ b/custom/custompfm/keeper/keeper.go @@ -6,17 +6,20 @@ import ( "strings" "time" - "github.com/armon/go-metrics" + sdkmath "cosmossdk.io/math" + + "github.com/hashicorp/go-metrics" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/address" - router "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward" - "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/keeper" - "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" + router "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward" + "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/keeper" + "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/types" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" custombankkeeper "github.com/notional-labs/composable/v6/custom/bank/keeper" ibctransfermiddlewarekeeper "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/keeper" ) @@ -141,7 +144,7 @@ func (im IBCMiddleware) OnRecvPacket( ) } - amountInt, ok := sdk.NewIntFromString(data.Amount) + amountInt, ok := sdkmath.NewIntFromString(data.Amount) if !ok { logger.Error("packetForwardMiddleware OnRecvPacket error parsing amount for forward", "amount", data.Amount) return newErrorAcknowledgement(fmt.Errorf("error parsing amount for forward: %s", data.Amount)) @@ -245,7 +248,7 @@ func getBoolFromAny(value any) bool { return boolVal } -func getReceiver(channel string, originalSender string) (string, error) { +func getReceiver(channel, originalSender string) (string, error) { senderStr := fmt.Sprintf("%s/%s", channel, originalSender) senderHash32 := address.Hash(types.ModuleName, []byte(senderStr)) sender := sdk.AccAddress(senderHash32[:20]) diff --git a/x/ibctransfermiddleware/keeper/keeper.go b/x/ibctransfermiddleware/keeper/keeper.go index 3be002cf9..1429d5ff3 100644 --- a/x/ibctransfermiddleware/keeper/keeper.go +++ b/x/ibctransfermiddleware/keeper/keeper.go @@ -1,12 +1,18 @@ package keeper import ( + "encoding/json" + "fmt" + "time" + "cosmossdk.io/log" + "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types" storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" + ibctypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" ) // Keeper of the staking middleware store